Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009
PEMBAHASAN
3.1 Analisa Masukan
Masukan dari aplikasi enkripsi dengan algoritma twofish adalah adalah plaintext dan kunci. Plaintext dapat berupa file teks,file grafik,file sound dan lain sebagainya. Kunci
dimasukkan secara manual setelah proses input plaintext.
3.2 Analisa Kebutuhan Perangkat Keras dan Perangkat Lunak
Perangkat keras yang digunakan ketika menguji implementasi dari algoritma twofish ini adalah sebagai berikut :
1. Procesor Pentium IV 1,8D GHz
2. Memory 512 MB
3. Hard Disk 40 GB
4. OS Windows XP
5. Monitor Samsung 17’’
Sedangkan perangkat lunak yang digunakan adalah sebagai berikut : 1.
Sistem Operasi Windows XP 2.
Microsoft Visual Basic 6.0 3.
Microsoft Visio 2003
3.3 Analisa Proses Enkripsi
Ukuran blok chipper simetries yang digunakan untuk enkripsi data pada algoritma Twofish adalah 128 bit. Tahap dalam enkripsi dengan menggunakan algoritma
Twofish adalah :
Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009
1. Penjadwalan
2. Pembagian Plaintext dan proses subsitusi
3.4 Analisa Prosedural
Analisa prosedural merupakan analisa implementasi pada pemrograman sistem. Sistem yang dimaksud disini adalah analisa sistem pemograman enkripsi dengan
menggunakan algoritma twofish.
3.4.1 Pembangkitan Kunci
Jumlah kunci internal yang harus dibangkitkan adalah sejumlah 40 kunci masing- masing 32 bit K
hingga K
39
. Dan juga dibutuhkan pembangkitan 4 buah kotak substitusi dari yang bergantung pada kunci. Twofish dapat menerima kunci sepanjang
128, 192, dan 256 bit N.
Kemudian terdefinisi k=N64. Kunci M terdiri dari 8k byte, m , ..., m
8k-1
. Byte- byte tersebut pertama-tama diubah menjadi 2k buah yang masing-masing terdiri dari
32 bit.
Hasil fungsi diatas kemudian digolongkan menjadi dua buah, ganjil dan genap. M
e
= M , M
2
, ..., M
2k-2
M
o
= M
1
, M
3
, ..., M
2k-1
Selanjutnya adalah kotak S. Langkah pertama adalah dengan
mengelompokkan kunci tersebut dikalikan dengan matriks 4x8 yang diturunkan dari RS. Setiap hasil sepanjang 4 byte duartikan sebagai satu buah 32 bit, menghasilkan
kotak S.
Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009
Hasil keluaran tahap ini adalah 2 buah matriks, matriks M genap dan matriks M ganjil, dan sebuah matriks kotak substitusi.
Adapun algoritma untuk membangkitan kunci adalah sebagai berikut
Tahap I :
Pada tahap pertama adalah pengujian ukuran kunci apakah sudah memenuhi syarat berikut pseudocode untuk menguji kunci :
If KeyLength 192 Then ReDim Preserve Key31
KeyLength = 256 ElseIf KeyLength 128 Then
ReDim Preserve Key23 KeyLength = 192
ElseIf KeyLength 64 Then ReDim Preserve Key15
KeyLength = 128 ElseIf KeyLength 32 Then
ReDim Preserve Key7 KeyLength = 64
Else ReDim Preserve Key3
KeyLength = 32 End I
Tahap II : Pada tahap kedua adalah pembentukan kunci yang tergantung pada S-box
pseudocodenya adalah:
Private Static Sub KeyCreateK As Byte, KeyLength As Long Dim i As Long
Dim lA As Long Dim lB As Long
Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009
Dim b3 As Byte Dim k64Cnt As Long
Dim k32e3 As Long Dim k32o3 As Long
Dim subkeyCnt As Long Dim sBoxKey3 As Long
Dim Key0 To 3, 0 To 3 As Byte Const SK_STEP = H2020202
Const SK_BUMP = H1010101 Const SK_ROTL = 9
k64Cnt = KeyLength \ 8 subkeyCnt = ROUND_SUBKEYS + 2 ROUNDS
For i = 0 To IIfKeyLength 32, KeyLength \ 8 - 1, 3 Call CopyMemk32ei, Ki 8, 4
Call CopyMemk32oi, Ki 8 + 4, 4 sBoxKeyKeyLength
\ 8
- 1
- i =
RS_RemRS_RemRS_RemRS_RemRS_RemRS_RemRS_RemRS_Remk32oi Xor k32ei
Next ReDim sKeysubkeyCnt
For i = 0 To subkeyCnt 2 - 1 lA = F32k64Cnt, i SK_STEP, k32e
lB = F32k64Cnt, i SK_STEP + SK_BUMP, k32o lB = lBSLlB, 8 Or lBSRUlB, 24
If m_RunningCompiled Then lA = lA + lB
Else lA = UnsignedAddlA, lB
End If sKey2 i = lA
If m_RunningCompiled Then lA = lA + lB
Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009
Else lA = UnsignedAddlA, lB
End If sKey2 i + 1 = lBSLlA, SK_ROTL Or lBSRUlA, 32 -
SK_ROTL Next
Call CopyMemKey0, 0, sBoxKey0, 16 For i = 0 To 255
If k64Cnt And 3 = 1 Then sBox2 i = MDS0, P0, i Xor Key0, 0
sBox2 i + 1 = MDS1, P0, i Xor Key1, 0 sBoxH200 + 2 i = MDS2, P1, i Xor Key2, 0
sBoxH200 + 2 i + 1 = MDS3, P1, i Xor Key3, 0 Else
b0 = i b1 = i
b2 = i b3 = i
If k64Cnt And 3 = 0 Then b0 = P1, b0 Xor Key0, 3
b1 = P0, b1 Xor Key1, 3 b2 = P0, b2 Xor Key2, 3
b3 = P1, b3 Xor Key3, 3 End If
If k64Cnt And 3 = 3 Or k64Cnt And 3 = 0 Then exception = True Then
b0 = P1, b0 Xor Key0, 2 b1 = P1, b1 Xor Key1, 2
b2 = P0, b2 Xor Key2, 2 b3 = P0, b3 Xor Key3, 2
End If sBox2 i = MDS0, P0, P0, b0 Xor Key0, 1 Xor
Key0, 0
Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009
sBox2 i + 1 = MDS1, P0, P1, b1 Xor Key1, 1 Xor Key1, 0
sBoxH200 + 2 i = MDS2, P1, P0, b2 Xor Key2, 1 Xor Key2, 0
sBoxH200 + 2 i + 1 = MDS3, P1, P1, b3 Xor Key3, 1 Xor Key3, 0
End If Next
End Sub
3.4.2 Pembagian Plaintext
Plainteks dibagi menjadi beberapa blok, setiap blok P1,…. memiliki panjang 128 bit, kemudian setiap blok dibagi menjadi 4 bagian K
K
1
, K
2
, K
3
.
Selanjutnya masing-masing bagian diolah dengan menggunakan proses whitening masukan terdapat di xor dengan empat kata kunci. Proses ini akan diikuti
oleh enam belas putaran. Adapun pseudocode pada pembagian plaintext adalah sebagai berikut :
1. Panggil GetWordLeftWord, ByteArray, Offset
2. Panggil GetWordLeftWord, ByteArray, Offset + 4
Pseudocode untuk fungsi GetWord adalah sebagai berikut: 1.
CryptBuffer3 = bbOffset 2.
CryptBuffer2 = bbOffset + 1 3.
CryptBuffer1 = bbOffset + 2 4.
CryptBuffer0 = bbOffset + 3 5.
Panggil CopyMemLongValue, CryptBuffer0,4 Untuk pengembalian nilainya, data kiri ataupun kanan akan dipisah kembali menjadi 4
bilangan masing-masing 8 bit. Pseudocodenya sebagai berikut: 1.
Panggil PutWordLeftWord, ByteWord, Offset
Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009
2. Panggil PutWordLeftWord, ByteWord, Offset + 4
Pseudocode untuk fungsi PutWord adalah sebagai berikut: 1.
Panggil CopyMemCryptBuffer0, LongValue, 4 2.
aByteOffset = CryptBuffer3 3.
aByteOffset + 1 = CryptBuffer2 4.
aByteOffset + 2 = CryptBuffer1 5.
aByteOffset + 3 = CryptBuffer0
3.4.3 Proses Subtitusi
Setelah dibentuk subkey, dilanjutkan dengan melakukan enkripsi plaintext sebanyak 16 putaran dengan operasi:
Li = Ri-1 Ri = Li-1 xor fRi-1,Ki
Adapun pseudocode untuk proses subtitusi adalah sebagai berikut :
For Offset = 0 To CipherLen - 1 Step 16 Call CopyMemDWord0, ByteArrayOffset, 16
DWord0 = DWord0 Xor CipherWord0 DWord1 = DWord1 Xor CipherWord1
DWord2 = DWord2 Xor CipherWord2 DWord3 = DWord3 Xor CipherWord3
Call EncryptBlockDWord Call CopyMemByteArrayOffset, DWord0, 16
Call CopyMemCipherWord0, DWord0, 16 Next
Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009
3.5 Perancangan Flowchart
Adapun flowchart dari program enkripsi dan deksripsi adalah sebagai berikut:
Gambar 3.1 Flowchart Aplikasi EnkripsiDekripsi Algoritma Twofish
Mulai
Tampilan Form Utama
Selesai Enkripsi
Input File
Masukkan Kunci
Enkripsi Dekripsi
Tampilkan Hasil Dekripsi
Y T
T Y
T T
Y Y
Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009
3.6 Implementasi
Implementasi dari algoritma twofish dibuat dengan menggunakan bahasa pemograman Visual Basic 6.0. Berikut tampilan dari implementasi algoritma Twofish.
Aplikasi ini terdiri dari 2 tab yaitu enkripsi, dekripsi.
Gambar 3.2 Form Tab Enkripsi
Tab berisi nama file yang akan di ekripsi. Untuk memasukkan nama file yang dienkripsi dapat mengklik tombol buka. Untuk pengisian kunci, isi kunci pada isian
pertama dan ulangi sekali lagi. Untuk mengenkrpi file terpilih klik tombol enkrip.
Untuk melihat hasil dari file yang telah di enkripsi, file tersebut dapat dilihat menggunakan notepad.
Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009
Gambar 3.3 Hasil Enkripsi
Sedangkan untuk proses dekripsi, pilih tab dekripsi, cara penggunaan sama dengan tab enkripsi . Berikut tampilan dari tab dekripsi.
Gambar 3.4 Fom Tab Dekrips
Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009
3.7 Percobaan Enkripsi dan Dekripsi