Proses Pembangkitan Kunci Proses Enkripsi Algoritma MMB

k k 1 k 2 … k 127 k k 1 … k 31 k 32 k 33 … k 63 k 64 k 65 … k 95 k 96 k 97 … k 127 Berdasarkan keterangan diatas, plaintext akan disusun seperti berikut. 77|[{username: username1,pas sword:password 1,URL:www.UR L-example.com}] Plaintext diatas akan diubah ke dalam bentuk biner. Jumlahnya ada 8 blok, di mana 7 blok pertama berukuran 128 bit dan blok terakhir blok ke-8 berukuran kurang dari 128 bit. Agar pas berukuran 128 bit, maka ditambahkan karakter null 0 sejumlah yang dibutuhkan pada saat data telah dikonversi ke bentuk biner.

3.1.5.1 Proses Pembangkitan Kunci

Proses pembentukan kunci pada metode MMB ini dapat dilihat pada bagan berikut ini : Gambar 3.2 Proses Pembentukan Kunci pada Metode MMB Untuk lebih memahami proses pembentukan kunci pada metode MMB, diberikan sebuah contoh berikut ini : Misalkan diketahui input kunci = S1 ILMU KOMPUTER, maka proses pembentukan kuncinya adalah sebagai berikut : Kunci = S1 ILMU KOMPUTER Ubah ke bentuk hexadesimal = 53 31 20 49 4c 4d 55 20 4b 4f 4d 50 55 54 45 52 Ubah ke bentuk biner = 01010011001100010010000001001001 01001100010011010101010100100000 01001011010011110100110101010000 01010101010101000100010101010010 Universitas Sumatera Utara Dipecah menjadi 4 sub kunci = k = 01010011001100010010000001001001 k 1 = 01001100010011010101010100100000 k 2 = 01001011010011110100110101010000 k 3 = 01010101010101000100010101010010 Kunci diperoleh dari master password dan memiliki panjang 128 bit. Lalu apabila master password tidak 16 karakter, maka akan diterapkan fungsi hashing pada master password untuk memperoleh kunci key tepat 128 bit atau 16 karakter. Cara kerja fungsi hashing ini sebagai berikut: 1. Kalau panjang master password adalah 16 karakter, maka tidak ada perubahan. 2. Kalau panjang master password kurang dari 16 karakter, maka ditambahkan karakter ASCII = 0  dalam heksa = 00  dalam binary = 0000 0000 sebanyak yang diperlukan agar panjangnya menjadi 16 karakter. 3. Kalau panjang master password lebih dari 16 karakter, maka dibagi menjadi beberapa bagian berukuran 16 karakter. Selanjutnya bagian- bagian tersebut di XOR kan tentunya setiap karakter dikonversi terlebih dulu ke nilai ASCII-nya sebelum di-XOR.

3.1.5.2 Proses Enkripsi Algoritma MMB

Enkripsi dilakukan dengan menerapkan transformasi iteratif pada blok-blok plaintext dengan blok-blok kunci sebagai parameter. Fungsi putaran non-linear fx diterapkan enam kali diantara pekalian modulo. Proses enkripsi pada MMB terdiri dari 13 langkah, yaitu sebagai berikut: 14. x i = x i XOR k i 15. fx , x 1 , x 2 , x 3 16. x i = x i XOR k i+1 17. fx , x 1 , x 2 , x 3 18. x i = x i XOR k i+2 19. fx , x 1 , x 2 , x 3 Universitas Sumatera Utara 20. x i = x i XOR k i+3 21. fx , x 1 , x 2 , x 3 22. x i = x i XOR k i 23. fx , x 1 , x 2 , x 3 24. x i = x i XOR k i+1 25. fx , x 1 , x 2 , x 3 26. x i = x i XOR k i+2 Dan fungsi fx 1 , x 2 , x 3 , x 4 sebagai berikut: d. x i = γ i x i e. Jika LSB x = 1, maka x = x XOR δ Jika LSB x 3 = 0, maka x 3 = x 3 XOR δ f. x i = x i-1 XOR x i XOR x i+1 keterangan : x i : sub blok Plainteks k i : sub blok Kunci key δ : Konstanta tetapan yang digunakan pada proses enkrip dekrip dengan nilai, 2AAAAAAA γ : Konstanta tetapan yang digunakan pada proses enkripsi dengan nilai, 025F1CDB Operasi perkalian yang digunakan merupakan operasi perkalian modulo 2 32 – 1. Nilai γ 1 , γ 2, γ 3 diperoleh dengan cara sebagai berikut : γ 1 = 2 γ γ 2 = 2 3 γ γ 3 = 2 7 γ Contoh proses enkripsi algoritma MMB dengan menggunakan data pada table 3.1 ditunjukkan seperti berikut ini : Plain hex = 37 37 7c 5b 7b 22 75 73 65 72 6e 61 6d 65 22 3a 22 75 73 65 72 6e 61 6d 65 31 22 2c 22 70 61 73 73 77 6f 72 64 22 3a 22 70 61 73 73 77 6f 72 64 31 22 2c 22 55 52 4c 22 3a 22 77 77 77 2e 55 52 4c 2d 65 78 61 6d 70 6c 65 2e 63 6f 6d 22 7d 5d Universitas Sumatera Utara Plain blok 128- bit : Blok plain 0 : 00110111001101110111110001011011 01111011001000100111010101110011 01100101011100100110111001100001 01101101011001010010001000111010 Blok plain 1 : 00100010011101010111001101100101 01110010011011100110000101101101 01100101001100010010001000101100 00100010011100000110000101110011 Blok Plain 2 : 01110011011101110110111101110010 01100100001000100011101000100010 01110000011000010111001101110011 01110111011011110111001001100100 Blok Plain 3 : 00110001001000100010110000100010 01010101010100100100110000100010 00111010001000100111011101110111 01110111001011100101010101010010 Blok Plain 4 : 01001100001011010110010101111000 01100001011011010111000001101100 01100101001011100110001101101111 01101101001000100111110101011101 BLOK PLAI N 0 Langkah 1: x[ i] = x[ i] XOR k[ i] x = x XOR k = 00110111001101110111110001011011 XOR 01010011001100010010000001001001 = 01100100000001100101110000010010 x 1 = x 1 XOR k 1 = 01111011001000100111010101110011 XOR 01001100010011010101010100100000 = 00110111011011110010000001010011 x 2 = x 2 XOR k 2 = 01100101011100100110111001100001 XOR 01001011010011110100110101010000 = 00101110001111010010001100110001 x 3 = x 3 XOR k 3 = 01101101011001010010001000111010 XOR 01010101010101000100010101010010 = 00111000001100010110011101101000 Langkah 2: x[ i] = f x[ i] x[ i] = gamma[ i] x[ i] x[0] = gamma[0] x[0] = 00000010010111110001110011011011 01100100000001100101110000010010 = 10010011000111011111000111000000 x[1] = gamma[1] x[1] = 00000100101111100011100110110110 00110111011011110010000001010011 = 01110001110101000110001101111100 x[2] = gamma[2] x[2] = 00010010111110001110011011011000 00101110001111010010001100110001 = 01111110000110001111100010111101 x[3] = gamma[3] x[3] = 100101111100011100110110110000000 00111000001100010110011101101000 = 11011000000011001011100011010100 if lsb x[ 0] = = 1, then x[ 0] = x[ 0] XOR delta lsbx[0] = 0 if lsb x[ 3] = = 0, then x[ 3] = x[ 3] XOR delta lsbx[3] = 0, x[3] = x[3] XOR delta = 11011000000011001011100011010100 XOR 00101010101010101010101010101010 = 11110010101001100001001001111110 Universitas Sumatera Utara x[ i] = x[ i- 1] XOR x[ i] XOR x[ i+ 1] x[0] = x[3] XOR x[0] XOR x[1] = 11110010101001100001001001111110 XOR 10010011000111011111000111000000 XOR 01110001110101000110001101111100 = 00010000011011111000000011000010 x[1] = x[0] XOR x[1] XOR x[2] = 00010000011011111000000011000010 XOR 01110001110101000110001101111100 XOR 01111110000110001111100010111101 = 00011111101000110001101100000011 x[2] = x[1] XOR x[2] XOR x[3] = 00011111101000110001101100000011 XOR 01111110000110001111100010111101 XOR 11110010101001100001001001111110 = 10010011000111011111000111000000 x[3] = x[2] XOR x[3] XOR x[0] = 10010011000111011111000111000000 XOR 11110010101001100001001001111110 XOR 00010000011011111000000011000010 = 01110001110101000110001101111100 Proses tersebut hanya ditunjukkan untuk 2 langkah awal pada 1 sub blok. Untuk blok selanjutnya proses tetap sama. Operasi hanya berbeda di blok yang akan diproses. Universitas Sumatera Utara

3.1.5.3 Flowchart Enkripsi MMB