BAB III ANALISIS DAN PERANCANGAN
Pada bab ini akan dijelaskan analisis untuk melakukan implementasi enkripsi file menggunakan algoritma Rijndael secara simetrik berlandaskan landasan teori yang telah dipaparkan pada bab sebelumnya. Kemudian dari hasil analisis tersebut nantinya akan digunakan sebagai dasar perancangan penyelesaian masalah.
3.1 ANALISIS MASALAH Program aplikasi ini dapat dibuat dengan adanya suatu analisis terlebih dahulu. Analisis sistem dilakukan dengan mendefinisian masalah yang ada, menganalis algoritma yang digunakan dan mengamati secara keseluruhan bagaimana program aplikasi ini dibentuk. Dalam pembuatan program aplikasi ini diperlukan suatu analisis yang benar agar nantinya dihasilkan suatu program aplikasi yang sesuai dengan yang diharapan. Fungsionalitas utama dari perangkat lunak tugas akhir ini adalah membuat pengamanan file yang dienkripsi dengan kata kunci, memproses file tersebut untuk dienkripsi dengan menyelipkan algoritma Rijndael dan menghapus file aslinya di dalam lokasi semula. Sehingga file tersebut tersimpan aman dan hanya dapat dibuka melalui proses dekripsi menggunakan kata kunci yang telah dipilih/dimasukkan pada saat enkripsi. Untuk menambah keleluasaan pengguna, perangkat lunak ini juga harus dapat memilih file dari folder yang berbeda. Dan juga proses membalikan file-file yang sudah dienkripsi tersebut menjadi file semula yang dapat dibaca oleh program aplikasinya. Seperti kita ketahui file-file dominan yang sering kita gunakan sehari-hari, seperti file Microsoft Word dan Microsoft Excel sudah mempunyai security buitlin bawaannya yang dapat kita gunakan pada saat kita akan menyimpan file. Berupa pemasangan password untuk membuka dan atau otorisasi untuk modifikasi seperti pada Gambar 3.1 dibawah ini.
41
42
Gambar 3.1 Fungsi pilihan keamanan pada Microsoft Word. Jika kita melakukan pencarian di Google untuk membuka file yang sudah dilengkapi password tersebut, maka puluhan bahkan ratusan pilihan software yang dapat digunakan untuk melakukannya seperti yang terlihat pada Gambar 3.3.
Gambar 3.2 Pencarian Google untuk meretas password dokumen word
43
Pada Gambar 3.3 dapat dilihat salah satu aplikasi pembuka password.
Gambar 3.3 Program Password Recovery Word 2007
Sebagai contoh jika kita membuat file Test.docx menggunakan program word 2007 dengan isi file “Test” seperti pada Gambar 3.4.
Gambar 3.4 Contoh dokumen microsoft word
44
Kemudian file tersebut kita buka dengan menggunakan aplikasi Notepad maka hasilnya sebenarnya secara kasat mata tidak bisa dimengerti dan akan tampak seperti Gambar 3.5 berikut:
Gambar 3.5 Dokumen microsoft word dibuka dengan notepad
Walaupun ekstensi file tersebut kita rubah dari “docx” menjadi “agp” misalnya. Orang awam yang tidak tahu akan bertanya file apakah fie tersebut. Tapi dari potongan-potongan file tersebut dapat dilihat seperti pada Gambar 3.6 yang dilingkarkan, mengandung kata word yang berorientasi Microsoft Word, orang dapat mudah menebaknya dan akan membukanya dengan program Microsoft Word.
Gambar 3.6 Dokument word yang diberi password dan dibuka dengan notepad
45
Pada Gambar 3.6 diatas, file Test.agp yang merupakan hasil perubahan ekstensi docx dan di simpan menggunakaan fasilitas builtin password untuk membuka dan memodifikasinya pun dapat kita lihat identitas “word Document”. Belum lagi file-file dari aplikasi pengolahan citra, film, audio yang sangat kurang proteksinya, sehingga pengamanan lanjutan harus digunakan untuk menghindari hal-hal yang tidak diinginkan. Salah satunya adalah dengan cara enkripsi file yang yang dapat dilakukan terhadap satu atau lebih dari satu file yang penulis coba bahas dengan menggunakan algoritama rijndael.
3.1.1 Analisa Struktur File Pada bagian ini penulis tidak akan membahas satu persatu struktur dari berbagai macam jenis file yang ada. Tapi penulis akan membahas inti dari jenis file yang digunakan dalam pemrosesan saja yaitu struktur plaintext. Dengan kemampuan bahasa pemrogaman C#, segala jenis file baik itu file audio, video, image, word, excel dan lain-lain dapat dikonversikan kedalam bentuk ini dengan sempurna. Sebelum proses algoritma berjalan, secara garis besar ada dua jenis input yang harus ditangani, yaitu file yang akan dienkripsi/didekripsi dan kata kunci sebagai key. Tiap file yang akan dienkripsi/didekripsi dan kata kunci yang dimasukkan akan dirubah dahulu menjadi plaintext. Kemudian setelah menjadi data plaintext, proses selanjutnya adalah membaginya masing-masing kedalam blok 1 byte dalam matriks berukuran 4 x 4 dan siap dibentuk CipherKey.
Analisa Plaintext Plain text adalah jenis teks murni yang hanya berupa karakter teks saja tanpa ada format apa-apa. Plain text ini biasanya hanya mengandung teks-teks yang diformat dengan menggunakan kode ASCI. Data plaintext inilah yang nantinya akan dimasukkan kedalam algoritma sebagai input dari proses utama. Format plaintext adalah format yang paling sederhana untuk menyimpan informasi dalam memori komputer. Plaintext dapat dianggap
46
sebagai common denominator terendah format penyimpanan yang dapat digunakan untuk proses selanjutnya seperti apa yang kita inginkan. Struktur dasar dari sebuah plain text adalah bahwa data-data yang ada diatur dalam baris, dengan beberapa nilai yang disimpan pada setiap barisnya. Dalam prakteknya nanti plain text ini dapat berisi karakter yang berasal code ASCII saja ataupun karakter yang mengandung Unicode, UTF7 ataupun UTF8 sebagai hasil konversi pembacaan file yang akan dienkripsi ataupun konversi kata kunci yang digunakan. Satu karakter kode ASCII adalah sama dengan 1 byte atau sama dengan 8 bit.
Tabel 3.1 Konversi plain teks dalam bit dan hexadesimal Dalam Hexa 6a 75 73 74 20 74 65 73 74 69 6e 67
Dalam Bit 01101010 01110101 01110011 01110100 00100000 01110100 01100101 01110011 01110100 Gambar01101001 3.xx 01101110 01100111
Plain Teks just testing
*panjang dan ukuran dari text tersebut adalah 12 byte.
Tabel 3.2 File PDF dalam plain text, bit dan hexadesimal Dalam Hexa 25 3.1.1. 2e 20 3c
Dalam Bit
Teks
50 44 46 2d 31 %PDF-1.4 00100101 01010000 Analisis Rijndael 34 0a 35Algoritma 20 30 5 0 obj 01000100 01000110 6f 62 6a 0a 3c << /S / 00101101 20 2f 53 20rijndael 2f Tentang cara mengenkripsi00110001 suatu file secara teknis dengan
00101110 00110100 00110101 menggunakan contoh00001010 file yang berisi kata ”akumengkiptrografi file” 00100000 00110000 00100000 01101111 3.1.2. Analisis Penerapan Enkripsi Dekripsi File 01100010 01101010 00001010 00111100 00111100 00100000 00101111 01010011 3.1.3. Analisis Dampak Sistem 00100000 00101111
47
3.1.2
Analisis Proses Enkripsi Rijndael Enkripsi yang digunakan dalam proses enkripsi file ini menggunakan
algoritma rijndael 128 bit. Ada pun prosesedur algoritma Rijndael adalah sebagai berikut : 1. File dan kata kunci yang akan dienkripsi terlebih dahulu diubah kedalam bentuk hexadesimal 2. Proses penyandian melakukan operasi sebanyak sepuluh ronde. Untuk sembilan round (round 1-9) terdiri atas proses add round key, sub-byte, shiftrows, dan mix column. Sedangan pada ronde kesepuluh hanya akan melakukan proses sub-byte, sift rows dan add round key. Seperti sudah diulas pada bab 2, Algoritma Rijndael menggunakan tahapan transformasi
SubBytes,
ShiftRows,
MixColumns
dan
AddRoundKey,
menghasilkan difusi dan konfusi yang kuat. Substitusi yang dihasilkan dari transformasi SubBytes mengubah nilai byte berdasarkan nilai asli dan nilai yang ada di kotak-S. Proses tersebut dapat dikatakan sebagai transformasi intrabyte. Permutasi yang dihasilkan dari proses ShiftRows mempertukarkan byte tanpa mengubah nilai bit di dalam byte. Transformasi ini dapat dikatakan sebagai transformasi byte-exchange (pertukaran byte) dan pada mixcolumn akan dilakukan transformasi interbyte untuk mengubah nilai bit dalam byte. Tujuannya adalah untuk menghasilkan difusi pada tingkat bit.
48
(A)
(B)
Gambar 3.7 Alur enkripsi Rijndael (A) dan Alur dekripsi Rijndael (B)
Berikut ini akan penulis jelaskan sedikit alur dari penggunaan algoritma Rijndael dalam mengenkripsi dan mendekripsi file teks sederhana yang yang berisi kalimat “surachman4150512” dan kunci enkripsi yang digunakan adalah : mercubuana123456. Detail dari langkah-langkah yang terjadi akan dijelaskan pada halaman lampiran. Pertama-tama sekali yang dilakuan adalah merubah kedua jenis input tersebut menjadi bilangan hexadesimal.
Plaintex
Hexadesimal
surachman4150512
73 75 72 61 63 68 6d 61 6e 34 31 35 30 35 31 32
mercubuana123456
6d 65 72 63 75 62 75 61 6e 61 31 32 33 34 35 36
49
Dari hexadecimal yang didapat, dibuat matriks berukuran 4 x 4. Input bits
73 75 72 61
Key bits
6d 65 72 63
63 68 6d 61
75 62 75 61
6e 34 31 35
6e 61 31 32
30 35 31 32
33 34 35 36
(matrix A)
(matriks B)
Melakukan proses XOR antara inbut byte matriks A dan matriks B sehingga didapat: 1e 16 00 03 10 0a 55 01 00 18 00 04 02 00 07 04 (matriks C)
Matriks ini akan kita gunakan sebagai masukan pada kunci rounde #1
3.1.2.1. Analisa Pembentukan ExpandKey pada Proses Enkripsi Key bits dalam matriks dibawah ini adalah hasil transformasi byte dari kata kunci untuk enkripsi yang kita masukan. Proses ini adalah pembuatan ExpandKey atau kunci ekspansi bit yang panjangnya 128bit atau 4 word menjadi kunci sebanyak 44 word. 4 word pertama, yaitu bit-bit kunci asli digunakan pada awal enkripsi. Kemudian 40 word berikutnya dari hasil Expand Key akan digunakan pada setiap Ronde. Key bits awal:
6d 65 72 63 75 62 75 61 6e 61 31 32 33 34 35 36
Didefinisian secara kolom : w[0] 6d 65 72 63
w[1] 75 62 75 61
w[2] 6e 61 31 32
w[3] 33 34 35 36
50
maka akan didapat: RotWord[1]= SubWord[1]= Proses untuk nilai W[4]
34 35 36 33 18 96 05 c3 W[0]
SubWord[1]
Rcon[1]
W[4]
6d
18
01
74
65
96
00
f3
72 63
xor
05
xor
c3
00
=
77
00
a0
W[1]
W[4]
W[5]
W[2]
W[5]
W[6]
75
74
01
6e
01
6f
62
f3
91
61
91
f0
02
31 32
75 61
xor
77
=
a0
c1
xor
02
=
c1
33 f3
Round Key#1 W[3]
W[6]
W[7]
W[4]
W[5]
W[6]
W[7]
33
6f
5c
74
01
6f
5c
34
f0
c4
f3
91
f0
c4
06
77
02
33
06
c5
a0
c1
f3
c5
35 36
xor
RotWord[2]= SubWord[2]=
33 f3
=
c4 06 c5 5c 1c 6f a6 4a
Proses terus berlanjut sehingga didapatkan keseluruhan kunci yang berjumlah 10 kunci yang nantinya akan dipakai pada masing-masing ronde. Kunci tersebut dapat dilihat pada Tabel 3.3 berikut. Rincian pembentukan kunci dapat dilihat pada lembar Lampiran 1.
51
Tabel 3.3. Kunci rounde ke-1 sampai ke-10 proses enkripsi RoundKey#1 w[4] w[5] w[6] w[7] 74 1 6f 5c f3 91 f0 c4 77 2 33 6 a0 c1 f3 c5
w[8] 6a 9c d1 ea
RoundKey#2 w[9] w[10] w[11] 6b 04 58 0d fd 39 d3 e0 e6 2b d8 1d
RoundKey#3 w[12] w[13] w[14] w[15] 7c 17 13 4b 12 1f e2 db 75 a6 46 a0 80 ab 73 6e
RoundKey#4 w[16] w[17] w[18] w[19] cd da c9 82 f2 ed 0f d4 ea 4c 0a aa 33 98 eb 85
RoundKey#5 w[20] w[21] w[22] w[23] 95 4f 86 4 5e b3 bc 68 7d 31 3b 91 20 b8 53 d6
RoundKey#6 w[24] w[25] w[26] w[27] f0 bf 39 3d df 6c d0 b8 8b ba 81 10 d2 6a 39 ef
RoundKey#7 w[28] w[29] w[30] w[31] dc 63 5a 67 15 79 a9 11 54 ee 6f 7f f5 9f a6 49
RoundKey#8 w[32] w[33] w[34] w[35] de bd e7 80 c7 be 17 6 6f 81 ee 91 70 ef 49 0
RoundKey#9 w[36] w[37] w[38] w[39] aa 17 f0 70 46 f8 ef e9 0c 8d 63 f2 bd 52 1b 1b
RoundKey#10 w[40] w[41] w[42] w[43] 82 95 65 15 cf 37 d8 31 a3 2e 4d bf ec be a5 be
3.1.2.2. Analsia SubByte pada Proses Enkripsi Proses subbytes adalah proses pensubtitusian masukan berdasarkan kotak-S yang berukuran matrix 16 x 16 yang desebut AES S-BOX yang berimisi permutasi semua 256 kemungkinan dari kombinasi 8-bit. Setiap sel matrix beris 1 byte (2digit hexadesimal). surachman4150512
73 75 72 61 63 68 6d 61 6e 34 31 35 30 35 31 32
mercubuana123456
6d 65 72 63 75 62 75 61 6e 61 31 32 33 34 35 36
52
Input bits
73 75 72 61
Key bits
6d 65 72 63
63 68 6d 61
75 62 75 61
6e 34 31 35
6e 61 31 32
30 35 31 32
33 34 35 36
(matrix A)
(matriks B)
Melakukan proses XOR antara Inbut byte A dan B sehingga didapat: 1e 16 00 03 10 0a 55 01 00 18 00 04 02 00 07 04 (matriks C) 1e 16 00 03
72 47 63 7b
10 0a 55 01
setelah diproses subbyte,
ca 67 fc 7c
00 18 00 04
matrix C akan menjadi:
63 ad 63 f2
02 00 07 04
77 63 c5 f2
(matriks C)
(matriks D)
Referensi tabel yang digunakan dalam proses subbyte
Tabel 3.4. Referensi Tabel Subbyte Proses Enkripsi
53
3.1.2.3. Analisa ShiftRows pada Proses Enkripsi Ini adalah proses yang sederhana. Baris ke-1 sampai baris ke-3 dari matrix D akan digeser ke kiri. Baris pertama tidak mengalami pergeseran posisi
72 47 63 7b
72 47 63 7b
ca 67 fc 7c
setelah diproses
67 fc 7c ca
63 ad 63 f2
shiftrows, matriks D
63 f2 63 ad
77 63 c5 f2
akan menjadi:
f2 77 63 c5
(matriks D)
(matriks E)
3.1.2.4. Analisa MixColumn pada Proses Enkripsi
Pada tahap ini matrix E akan diperlakukan sebagai suatu polinomial yang berada dalam GF(28) dan akan dikalikan dengan modle X4+1
02 03 01 01
72 47 63 7b
01 02 03 01
Matrix F akan dikalikan
67 fc 7c ca
01 01 02 03
dengan matriks E
63 f2 63 ad
03 01 01 02
f2 77 63 c5
(matriks F)
(matriks E)
dc 14 42 db
Akan didapat
eb de 5d dd de dd 7c a4 6d 29 7c 7b (matriks G)
54
3.1.2.5 Analisa AddRoundKey pada Proses Enkripsi Hasil dari matriks G akan di-XOR-an dengan kunci roune #1, yaitu kunci hasil dari proses ExpandKey. dc 14 42 db
74 01 6f 5c
a8 15 2d 87
eb de 5d dd
f3 91 f0 c4
18 4f ad 19
de dd 7c a4
xor
77 02 33 06
=
a9 df 4f a2
6d 29 7c 7b
a0 c1 f3 c5
cd e8 8f be
(matriks G)
(keyround#1)
(matriks H)
Matriks H akan digunakan sebagai nilai awal pada ronde ke-2. Matriks H, diproses SubByte->SiftRow->MixColumn, XOR keyround#3, dan seterusnya, hingga pada putaran ke sepuluh hanya dilakukan proses Subbyte, shiftrow dan AddRoundey saja. Detail proses dapat dilihat pada Lampiran 1. Sehingga ciphertext yang didapat nantinya adalah : 80 7f 55 95 90 50 73 6b 88 c2 6d a6 fb d0 31 47
Setelah dikonversikan kedalam bentuk text maka cipertext diatas akan menjadi : �U��Psk�Âm¦ûÐ1G
3.1.3. Analisa Proses Dekripsi Rijndael Berikut akan diulas sedikit proses dekripsi dari data proses hasil enkripsi. Detail lengkapnya dapat dilihat pada Lampiran 2. Ciphertext : �U��Psk�Âm¦ûÐ1G ; dalam heksadesimal : 80 7f 55 95 90 50 73 6b 88 c2 6d a6 Fb d0 31 47 Kunci enkripsi : mercubuana 123456 ; dalam heksadesimal : 6d 65 72 63 75 62 75 61 6e 61 31 32 33 34 35 36 Konversi menjadi matriksnya adalah :
55
Cipher bits
80 7f 55 95
key bits
6d 65 72 63
90 50 73 6b
75 62 75 61
88 c2 6d a6
6e 61 31 32
fb d0 31 47
33 34 35 36
(matrix A)
(matriks B)
3.1.3.1 Analisa Pembentukan ExpandKey pada Proses Dekripsi Sama seperti pada proses enkripsi, tahap awal dalam proses dekripsi adalah pembentukan dan pendefinisian kunci ronde kesatu sampai ronde kesepuluh menggunakan data input dari kata kunci yang digunakan pada proses enkripsi. Karena kunci dekripsi adalah sama dengan kunci enkripsi, maka kunci ronde kesatu sampai dengan kunci ronde kesepuluh akan sama hasilnya. Hanya urutan penggunaannya pada proses-proses selanjutnya saja yang berbeda, jika pada proses enkripsi dimulai dari kunci kesatu sampai dengan kesepuluh, maka pada proses dekripsi kunci kesepuluh-lah yang pertama kali digunakan pada proses-proses berikutnya. Tabel 3.5 Kunci rounde ke-1 sampai ke-10 proses Dekripsi RoundKey#1 w[4] w[5] w[6] w[7] 74 1 6f 5c f3 91 f0 c4 77 2 33 6 a0 c1 f3 c5
w[8] 6a 9c d1 ea
RoundKey#2 w[9] w[10] w[11] 6b 04 58 0d fd 39 d3 e0 e6 2b d8 1d
RoundKey#3 w[12] w[13] w[14] w[15] 7c 17 13 4b 12 1f e2 db 75 a6 46 a0 80 ab 73 6e
RoundKey#4 w[16] w[17] w[18] w[19] cd Da c9 82 f2 Ed 0f d4 ea 4c 0a aa 33 98 eb 85
RoundKey#5 w[20] w[21] w[22] w[23] 95 4f 86 4 5e b3 bc 68 7d 31 3b 91 20 b8 53 d6
RoundKey#6 w[24] w[25] w[26] w[27] f0 bf 39 3d df 6c d0 b8 8b ba 81 10 d2 6a 39 ef
RoundKey#7 w[28] w[29] w[30] w[31] dc 63 5a 67 15 79 a9 11 54 ee 6f 7f f5 9f a6 49
RoundKey#8 w[32] w[33] w[34] w[35] de bd e7 80 c7 be 17 6 6f 81 ee 91 70 ef 49 0
RoundKey#9 w[36] w[37] w[38] w[39] aa 17 f0 70 46 f8 ef e9 0c 8d 63 f2 bd 52 1b 1b
56
RoundKey#10 w[40] w[41] w[42] w[43] 82 95 65 15 cf 37 d8 31 a3 2e 4d bf ec be a5 be
3.1.3.2 Analisa AddRoundKey pada Proses Dekripsi Tidak seperti pada proses enkripsi dimana proses setelah pembentukan kunci
ekspansi
adalah
proses
Sub-byte,
ShiftRow,
MixcColumn
dan
AddRoundKey. Pada proses dekripsi proses setelah pembentukan kunci ekpsansi adalah proses AddRoundKey menggunakan ExpandKey yang terakhir atau yang kesepuluh dengan cipher text, yang prosesnya adalah:
RoundKey #10
82 95 65 15
Cihper Text 80 7f 55 95
cf 37 d8 31
90 50 73 6b
a3 2e 4d bf
88 c2 6d a6
ec be a5 be
fb d0 31 47
(matriks A)
(matriks B)
Dilakukan proses XOR atara matriks A dan matriks B, sehingga didapat 02 ea 30 80 5f 67 ab 5a 2b ec 20 19 17 6e 94 f9
(matriks C) Matriks C ini selanjutnya kita sebut matriks awal rounde kesatu yang nantinya akan
dilakukan
proses
InvShiftRow,
InvSubByte
dan
AddRoundKey.
AddRoundKey pada tahap kesatu ini akan menggunakan RoundKey #9.
3.1.3.3 Analisa Invers ShiftRow pada Proses Dekripsi. Menggunakan data masukan (matriks C) hasil dari XOR antara cipher text dan RoundKey #10.
57
02 ea 30 80 5f 67 ab 5a 2b ec 20 19
02 ea 30 80
Setelah proses InvShiftRow :
17 6e 94 f9
5a 5f 67 ab 20 19 2b ec 6e 94 f9 17
(matriks C)
(matriks D)
3.1.3.4 Analisa Invers SubByte pada Proses Dekripsi. Pada proses invers sub byte ini, table acuan yang digunakan berbeda dengan table enkripsi, tabel tersebut dapat dilihat dibawah ini:
Tabel 3.6. Referensi Tabel Subbyte Proses Dekripsi
Matriks hasil invers ShiftRow (matriks D) kemudian akan di SubByte dengan tabel referensi diatas, sehingga menjadi: 02 ea 30 80 5a 5f 67 ab 20 19 2b ec 6e 94 f9 17 (matriks D)
6a bb 08 3a
Setelah proses SubByte:
46 84 0a 0e 54 8e 0b 83 45 e7 69 87 (matriks E)
58
3.1.3.5 Analisa Invers AddRoundKey pada Proses Dekripsi Berikutnya adalah melakukan proses XOR antara matriks hasil proses subbyte (matriks E) dengan RoundKey #9.
6a bb 08 3a
aa 17 f0 70
C0 ac f8 4a
46 84 0a 0e
46 f8 ef e9
00 7c e5 e7
54 8e 0b 83
XOR
0c 8d 63 f2
45 e7 69 87
bd 52 1b 1b
(matriks E)
(RoundKey #9)
=
58 03 68 71 F8 b5 72 9c (matriks F)
Proses terus dilakukan sampai putaran ke sepuluh sampai akhirnya didapat plain text hasil dekripsi, yaitu : 73 75 72 61 63 68 6d 61 6e 34 31 35 30 35 31 32
Yang dalam bentuk barisnya adalah 73 75 72 61 63 68 6d 61 6e 34 31 35 30 35 31 32, dan jika dikonversi kedalam textnya akan menjadi
surachman4150512. Penjelasan lebih lanjut dari proses dekripsi ini dapat dilihat pada lampiran 2
3.1.4 Analisis Penerapan Enkripsi dan Dekripsi Dari uraian bab 2 dan analisa algoritma Rijndael pada awal bab 3 kita dapat melihat bahwa proses-proses yang terjadi adalah proses biasa dan dapat kita terapkan dan tuliskan kedalam bahasa program manapun yang mendukung penangan input-output file dan array seperti bahasa C, visual basic, java dan lain sebagainya. Dibawah ini akan dijelaskan sedikit pseuodecode-pseudecode inti yang menjadi mesin aplikasi dalam menciptakan kode enkripsi Rijndael.
59
Funsi Cipher() Fungsi ini adalah fungsi keseluruhan dari algoritma dalam bahasa pemrogaman yang ditulis. Cipher(byte in[4*Nc], byte out[4*Nc], word k[Nn+1,Nc], Nc, Nn) Begin byte state[4,Nc] state = in XorRoundKey(state, k[0,-], Nc) // k[0,-] = k[0..Nc-1] for round = 1 step 1 to Nn – 1 SubBytes(state, Nc) ShiftRows(state, Nc) MixColumns(state, Nc) XorRoundKey(state, k[round,-], Nc) end for SubBytes(state, Nc) ShiftRows(state, Nc) XorRoundKey(state, k[Nn,-], Nc) out = state end
1.
Pada awal enkripsi, input plaintext 128 bit akan disalinkan ke suatu array yang diberi nama state array. Dengan variable :
2.
-
Nc adalah jumlah kolom, nilai 4 adalah standar AES 128-bit
-
Nn adalah jumlah ronde, nilai 10 adalah standar AES 128-bit
Notasi k[Nn+1,Nc] mengidentifkasikan bahwa array k mengandung Nn +1 pada tiap roundenya.
3.
Proses
enkripsi
dimulai
dengan
suatu
proses
yang
disebut
XORAddRoundKey() dengan memproses matrix byte in yang telah berukuran 4 x 4. 4.
Melakukan
proses
iterasi
sebanyak
9
rounde
untuk
proses
SubBytes(),ShiftRows(), MixColumns() dan AddRoundKey(). 5.
Dan
melakukan
sebanyak 1 ronde
proses
SubBytes(),ShiftRows(),dan
AddRoundKey()
60
Fungsi XorRoundKey() XorRoundKey(byte state[4,Nc], word k[round,*], Nc) Begin for c = 0 step 1 to Nc – 1 for r = 0 step 1 to 3 state[r,c] = state[r,c] xor xbyte(r, k[round,c]) end for end for end
-
Melakukan XOR antara state awal (plainteks) dengan cipher key. Tahap ini disebut juga initial round.
-
Plainteks diolah dengan mengimplementasaikan bitwise XOR dengan komponen round key. Pada keadaan awal, cipher key-lah yang menjadi round key.
.
Fungsi SubByte() SubBytes(byte state[4,Nc], Nc) begin for r = 0 step 1 to 3 for c = 0 step 1 to Nc - 1 state[r,c] = Sbox[state[r,c]] end for end for end
-
Tiap nilai dari matrix hasil proses XorRoundKey akan di petakan pada Sbox dan akan menghasilkan matriks baru.
Fungsi ShiftRows() ShiftRows(byte state[4,Nc], Nc) begin byte t[Nc] for r = 1 step 1 to 3 for c = 0 step 1 to Nc - 1 t[c] = state[r, (c + h(r,Nc)) mod Nc] end for for c = 0 step 1 to Nc – 1 state[r,c] = t[c] end for end for end -
Initalisasi baris yang akan digeser (baris 2, baris 3, dan baris 4)
-
Baris 2 akan mengalami pergeseran bit sebanyak satu step ke kiri
61
-
Baris 3 akan mengalami pergeseran bit sebanyak dua step ke kiri
-
Baris 4 akan mengalami pergeseran bit sebanyak tiga step ke kiri.
Fungsi MixClumn () MixColumns(byte state[4,Nc], Nc) begin byte t[4] for c = 0 step 1 to Nc – 1 for r = 0 step 1 to 3 t[r] = state[r,c] end for for r = 0 step 1 to 3 state[r,c] = FFmul(0x02, t[r]) xor FFmul(0x03, t[(r + 1) mod 4]) xor t[(r + 2) mod 4] xor t[(r + 3) mod 4] end for end for end
-
Mengambil nilai kolom pertama tiap baris dari hasil matrik siftrow
-
Melakukan proses XOR antara kolom pertama tiap baris tersebut dengan galois field yang merupakan konstanta AES-128bit.
3.1.5 Analisis Dampak Sistem Pada setiap pengimplementasian suatu aplikasi, perlu kita perhatikan dampak-dampak yang ditimbulkannya. Dalam hal ini, kita akan membahas dampak aplikasi yang akan kita bangun terhadap sistem komputer dan dampak keamanan yang diberikan oleh aplikasi tersebut. 1. Dampak Aplikasi terhadap Sistem Komputer Aplikasi yang akan dibangun merupakan aplikasi yang berdiri sendiri yang didukung .Net Framework sehingga
hasil pemrograman berbasis objek
menjadi aplikasi yang konsisten terlepas dari apakah obyek itu disimpan dan dieksekusi secara lokal, dan didistribusikan melalui internet, atau dieksekusi secara remote. Lingkungan ini juga mengurangi penggunaan piranti lunak dan konflik terhadap masalah versioning. 2. Dampak Keamanan yang Diberikan Aplikasi Dengan dienkripsinya file-file yang kita simpan atau akan kita kirimkan, maka informasi yang ada didalamnya akan terlindung dari kebocoran yang tidak kita harapkan.
62
Secara matematis berbagai pembuktian telah dilakukan dan ditunjukkan bahwa AES dapat bertahan menghadapi serangan-serangan berikut ini : Differential Cryptanalisis dan Linear Cryptanalysis, Truncated Differentials, The Square Attacks, dan Interpolation Attacks Brute force attack 3. Perbandingan dengan Aplikasi Enkripsi standard Aplikasi yang kita bangun memberikan nilai lebih berupa keamanan dalam menjaga kerahasiaan isi dari file dan dapat melakukan pengenkripsian banyak file secara sekaligus dalam waktu yang cepat.
3.2 ANALISIS KEBUTUHAN PEMBANGUNAN APLIKASI Dari paparan analisa permasalahan yang telah dijabarkan pada bagian sebelumnya, berikutnya kita akan menganalisa proses dari pembangunan aplikasi ini. Analisa yang dibahas akan meliputi analisa kebutuhan perangkat lunak, perancangan arsitektur aplikasi serta proses yang ada didalamnya.
3.2.1
Deskripsi Umum Sistem Aplikasi yang akan dibangun merupakan aplikasi yang akan diterapkan
pada komputer berbasis Microsoft Windows, yang memiliki fungsi untuk enkripsi dan dekripsi file. Jika file yang kita enkripsi akan dipindahkan atau dikirimkan ke pihak lain, maka program aplikasi yang sama harus ada pada pc pihak lain tersebut. Data yang akan digunakan dalam sistem yaitu : 1. File data standard File data ini adalah file yang akan dipilih untu dienkripsi yang dipilih oleh pengguna aplikasiData pesan SMS adalah pesan yang dimasukan oleh pengirim yang ditujukan kepada si penerima. Data pesan SMS ini adalah
63
pesan yang belum terenkripsi. Data pesan ini merupakan pesan teks yang kemudian dalam proses enkripsi akan diubah menjadi bentuk binary. 2. File data Terenkripsi File ini adalah file yang telah melalui proses enkripsi oleh aplikasi yang akan dibangun berdasarkan kunci yang dimasukkan oleh pengguna. File ini sudah dalam bentuk binary sehingga jika kita buka, maka kita tidak akan mengerti isinya. 3. Data Kunci Enkripsi Data kunci ini berasal dari pengguna yang akan digunakan untuk melakukan proses enkripsi. Data Kunci Enkripsi ini dapat dipakai untuk memperoses filefile lain yang dilakuan secara bersamaan. Data kunci ini pun diubah menjadi bentuk binary. 4. Data Kunci Dekripsi Data ini berasal dari pelaku enkripsi. Penggunaan kunci dekripsi ini dapat dilakukan secara bersamaan untuk mendekripsi satu atau lebih file yang telah dienkripsi. Jika kunci yang digunakan sama dengan data kunci enkripsi, maka file yang telah didekripsi akan sesuai dengan apa yang diharapkan. 5. File data keluaran File ini adalah hasil akhir yang didapat oleh penerima setelah data kunci dekripsi dimasukkan. File asli yang telah didekripsi akan dapat dibuka berdasarkan apliaskasi program bawaannya.
3.2.2 Analisis Spesifikasi dan Kebutuhan Aplikasi Pada pengembangan aplikasi ini, terdapat dua proses fitur utama yang akan diberikan. Fitur tersebut adalah : 1. Fitur Enkripsi 2. Fitur Dekripsi Dengan melihat kebutuhan utama yang diutarakan di atas, serta dengan mengingat kebutuhan akan kemudahan dalam pemakaian, maka aplikasi yang akan dibangun memiliki beberapa kebutuhan yang harus tersedia. Kebutuhan fungsional aplikasi tersebut yaitu : 1. Sistem memiliki kemampuan untuk dapat melakukan merubah segala bentu file kedalam bentuk binary.
64
2. Sistem dapat melakukan enkripsi file dengan menggunakan algoritma enkripsi Rijndael. 3. Sistem harus dapat melakukan penulisan file output sebagai proses akhir dari enkripsi atau dekripsi. 4. Pesan yang telah dienkripsi harus dapat dibedakan dengan sebelum dienkripsi. Begitupun sebaliknya. Sedangkan untuk kebutuhan non-fungsional dari apliakasi yang akan dibangun antara lain : 1. Sistem akan memiliki antar muka yang menarik dan juga mudah untuk dimengerti untuk digunkan. 2. Sistem mudah untuk dikembangkan untuk kebutuhan atau perbaikan lebih lanjut. Sistim pemrograman berorientasi objek dengan rancangan kelas dirasakan penulis dapat memenuhi hal ini, sistem sebaiknya dibangun dengan konsep pemrograman berorientasi objek.
3.2.3 Batasan Rancangan Sistem Batasan rancangan sistem dalam pengembangan perangkat lunak ini adalah sebagai berikut: 1.
Perangkat lunak hanya bekerja dilingkungan Microsoft Windows (Windows XP Home/Pro, Windows Server 2003/2008, Windows 7 Pro/Ultimate 32bit/64bit).
2.
Perangkat lunak hanya melakukan enkripsi file pada 1 kali iterasi. Jadi file yang sudah dienkripsi tidak dapat dilakukan enkripsi lagi.
3.
Ukuran blok untuk algoritma Rijndael adalah 128 bit.
4.
Ukuran 1 file yang dapat dienkripsi adalah 2 gigabyte.
3.2.4 Use Case Pemodelan aplikasi yang akan dibangun dapat digambarkan dalam bentuk diagram use case. Pada pembuatan aplikasi ini use case yang dibuat dapat dilihat pada Gambar 3.8 berikut:
65
SISTEM Memasukkan katakunci
<<
ex
ten
d>
>
Memilih lokasi file
Memilih file
<<ex
tend
>>
Pengguna
Membentuk roundkey
>>
tend
<<ex
Melakukan enkripsi
aplikasi
<<ex
tend
>>
<< ex
te
nd
>>
ciphertext
Melakukan dekripsi
<<extend>> Plain text
Gambar 3.8 Use Case Diagram
Penjelasan untuk gambar diatas adalah sebagai berikut Use Case Name
Melakukan enkripsi
Tujuan
Pengguna ingin melakukan enkripsi file
Aktor
Pengguna
Keterangan
-
Pengguna memasukkan katakunci yang akan digunakan untuk mengenkripsi file
-
Pengguna meregister folder tempat lokasi file yang akan dienkripsi berada
-
Pengguna memilih file yang akan dienkripsi di folder yang telah teregister (contohnya jika ada 3 file dalam folder tersebut, tetapi hanya 2 file saja yang akan dipilih untuk dienkripsi)
-
Roundkey akan dibangun berdasarkan file dan kata kunci yang dimasukkan
-
Sistem akan mengenkripsi file dan isi file akan menjadi ciphertext
-
File yang telah dienkripsi yang isinya telah
66
berubah menjadi ciphertext akan di simpan pada folder yang sama, ekstensi .aes akan ditambahkan pada file yang telah terenkripsi, dan file asli sebelum enkripsi akan dihapus
Use Case Name
Melakukan dekripsi
Tujuan
Pengguna ingin melakukan dekripsi file
Aktor
Pengguna
Keterangan
-
Pengguna memasukkan katakunci yang akan digunakan untuk dekripsi file
-
Pengguna meregister folder tempat lokasi file yang akan didekripsi berada
-
Pengguna memilih file yang akan didekripsi di folder yang telah dipilih
-
Roundkey
akan
dibangun
berdasarkan
file
ciphertext dan kata kunci yang dimasukkan -
Sistem akan mendekripsi file
-
File yang telah didekripsi akan di simpan pada folder yang sama, ekstensi .aes akan dihilangkan, dan file asli enkripsi akan dihapus
67
3.2.5 Aktivity Diagram Activity diagram dari program enkripsi file yang dibuat dapat dilihat pada Gambar 3.9 dibawah ini. Pengguna
Sistem aplikasi
Masukan kata kunci
Pilih folder
Tambah folder lain
ya
Pilih file yang akan dienkripsi
Proses enkripsi file
ciphertext
Hapus file asli
Gambar 3.9. Aktivity Diagram enkripsi -
Aktifitas dimulai setelah user menjalankan aplikasi, user diminta untuk memasukkan kata kunci.
-
Selanjutnya user diminta untuk meregistrasi folder yang digunakan sebagai penunjuk tempat file yang akan dienkripsi berada.
-
Jika ada file lain di folder yang berbeda, maka user dapat menambahkan folder lain tersebut.
-
User dapat memilih file-file yang akan dienkripsi dimasing-masing folder yang berbeda.
-
Setelah file enkripsi yang sudah berupa ciphertext terbentuk, maka file original akan dihapus.
68
Sedangkan diagram activity untuk dekripsi digambarkan pada Gambar 3.10 dibawah ini : Pengguna
Sistem aplikasi
Masukan kata kunci
Pilih folder
Tambah folder lain
ya
Pilih file yang akan didekripsi
Proses dekripsi file
plaintext
Hapus file enkripsi
Gambar 3.10 Aktivity Diagram Dekripsi
-
Seperti proses enkripsi, pada proses dekripsi pengguna diminta terlebih dahulu untuk memasukkan kata kunci yang digunakan untuk melakukan proses dekripsi file.
-
Setelah itu pengguna diminta untuk memilih folder tempat file tersebut berada.
-
Kemudian pengguna diminta untuk memilih file-file yang akan didekripsi dimasing-masing folder.
-
Jika kata kunci yang dimasukkan benar, maka proses dekripsi dapat dilakukan dan akan menghasilkanvplaintext
-
Program akan menghaspus file enkripsi jika proses dekripsi telah berhasil dilakukan.
69
3.3 PERANCANGAN KELAS Dari diagram use case diatas, dapat dirancang menjadi beberapa kelas yang terdapat dalam sistem. Kelas-kelas tersebut dapat digambarkan sebagai berikut:
form_password form_proses
- textbox1 : string + get password () : void
-btnAdddir : string -btnRemDir :string -cryptoIV : byte -cryptoKey : byte +btnAddDir_click () : void +btnRemDir () : void +listview () : void +proses_enkripsi () : void +proses_dekripsi : void
inisialisasi_file -filename : string -filelenght : int -fileposition : int
KriptoManager inName : string outName : string Pass : string rijnKey : byte RijnIV : byte +key_encrypt +rijdael_encrypt +rijndael_decrypt
+get filename () : void +get filelenght () : void +get fielposition () : void
Gambar 3.11. Diagram kelas perancangan
Dari gambar diatas dapat dijelaskan : 1. Kelas FormPassword Kelas ini berfungsi sebagai jembatan antar muka dalam memasukkan kata kunci yang akan digunakan untuk proses enkripsi atau dekripsi. 2. Kelas FormProses Kelas ini berfungsi sebagai tempat dimana proses dari aplikasi yang dibuat dipilih untuk dijalankan baik itu proses enkripsi, proses dekripsi, peregistrian folder, dan pemilihan file dilakukan. 3. Kelas KryptoManager Kelas ini adalah mesin aplikasi program yang dibuat. Input yang diberikan akan diproses menjadi output. Algoritma enkripsi beserta pembentukan kunci internal akan diimplementasikan pada kelas ini. 4. Kelas List_File_Selection
70
Kelas ini digunakan untuk menampilkan isi file dari suatu folder yang dipilih dan memilih file yang akan dienkripsi atau didekripsi. 5. Kelas Insialisasi_file Pada kelas ini akan diinisialisasi nama dari file yang akan dienkripsi, lokasinya dan panjang dari file tersebut.
3.4 PERANCANGAN ANTARMUKA PERANGKAT LUNAK Antarmuka aplikasi terdiri dari dua bagian, yaitu bagian input kunci enkripsi/dekripsi dan bagian proses. Bagian input kunci untuk enkripsi/dekripsi dapat dilihat pada gambar. Masukan kata kunci untuk enkripsi / dekripsi
ok
Gambar 3.12 Form input kunci enkripsi/dekripsi
Untuk
antar muka proses enkripsi / dekripsi dibagi menjadi 2 tabulasi yang
nantinya akan digabungkan dalam satu form.
Gambar 3.13 Rancangan antarmuka Pendaftaran Folder
71
Gambar 3.14 Rancangan antarmuka Proses Enkripsi/Dekripsi
Keterangan Gambar 3.13: No#
Keterangan
1
Untuk menutup program aplikasi
2
Folder-folder yang telah didaftar kan akan tertera di table ini
3
Folder-folder yang telah didaftar kan akan tertera di table ini
4
Jika ingin menambahkan folder lainya, maka tombol ini harus diklik
Keterangan Gambar 3.14: No#
Keterangan
1
Untuk menutup program aplikasi.
2
Daftar folder yang sudah didaftarkan sebelumnya.
3
File asli yang belum terenkripsi dalam folder yang sudah dipilih Jika folder lain akan diproses, maka kembali ke nomor 2.
4
Proses enkripsi akan dilakukan sesuai dengan file-file yang tertera di nomor 3.
5
Proses dekripsi file-file yang sudah dienkripsi yang berada di tabel nomor 7. Jika folder awal sudah berubah/tidak ditemukan, maka
72
folder baru tempat penampungan file yang akan didekripsi harus didaftar kan terlebih dahulu. 6
Untuk menghilangkan memori hasil proses yang mungkin masih tersimpan.
7
Tabel file-file yang telah dienkripsi yang berada di foder yang telah didaftarkan sebelumnya.
8
Indikator yang menunjukkan file yang sedang diproses, ukuran file dan waktu proses.