Laporan Avalanche Effect
Dari Algoritma Rivest Code 4 (RC4)
Nama : Annisa Nurika
NIM : 09021181419127
UNIVERSITAS SRIWIJAYA
TEKNIK INFORMATIKA REGULER A 2014
Algoritma kriptografi Rivest Code 4 (RC4)
Algoritma kriptografi Rivest Code 4 (RC4) merupakan salah satu algoritma kunci simetris dibuat oleh RSA Data Security Inc (RSADSI) yang berbentuk stream chipper. Algoritma ini ditemukan pada tahun 1978 oleh Ronald Rivest dan menjadi simbol keamanan RSA (merupakan singkatan dari tiga nama penemu: Rivest Shamir Adleman). RC4 menggunakan panjang kunci dari 1 sampai 256 byte yang digunakan untuk menginisialisasikan tabel sepanjang 256 byte. Tabel ini digunakan untuk generasi yang berikut dari pseudo random yang menggunakan XOR dengan plainteks untuk menghasilkan cipherteks. Masing-masing elemen dalam tabel saling ditukarkan minimal sekali.
Algoritma RC4 menggunakan dua buah S-Box yaitu array sepanjang 256 yang berisi permutasi dari bilangan 0 sampai 255, dan S-Box kedua, yang berisi permutasi merupakan fungsi dari kunci dengan panjang yang variabel.
Cara kerja algoritma RC4 yaitu inisialisasi S-Box pertama, S[0],S[1],...,S[255], dengan bilangan 0 sampai 255. Pertama isi secara berurutan S [0] = 0, S[1] = 1,..., S[255] = 255. Kemudian inisialisasi array lain (S-Box lain), misal array K dengan panjang 256. Isi array K dengan kunci yang diulangi sampai seluruh array K[0], K[1],...,K[255] terisi seluruhnya.
Proses inisialisasi S-Box (Array S)
for i = 0 to 255
S[i] = i
Proses inisialisasi S-Box (Array K)
Array Kunci // Array dengan panjang kunci “length”.
for i = 0 to 255
K[i] = Kunci[i mod length]
Kemudian lakukan langkah pengacakan S-Box dengan langkah sebagai berikut:
i = 0 ; j = 0
for i = 0 to 255
{
j = (j + S[i] + K[i]) mod 256
swap S[i] dan S[j]
}
Setelah itu, buat pseudo random byte dengan langkah sebagai berikut:
i = ( i + 1 ) mod 256
j = ( j + S[i] ) mod 256
swap S[i] dan S[j]
t = (S[i] + S[j]) mod 256
K = S[t]
Byte K di-XOR-kan dengan plainteks untuk menghasilkan cipherteks atau di-XOR-kan dengan cipherteks untuk menghasilkan plainteks.a
Simulasi pengukuran AE pada Proses enkripsi Algoritma RC4
Saya menggunakan metode mengukur difusi bit dari 2 proses (enkripsi/deskripsi) dengan plainteks yang sama dan 2 kunci yang berbeda 1 bit.
Dan dengan menggunakan Array mode 8 byte
Plainteks : HELO (01001000, 01000101, 01001100, 01001111)
Kunci 1 : HID (01001000, 01001001, 01000100)
Kunci 2 : JID (01001010, 01001001, 01000100 )
1. Inisialisasi S-Box (Array S) mode 8 byte
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
2. Inisialisasi S-Box (Array Kunci ) 4 byte kunci array, Kunci = HID
7
|
8
|
3
|
7
|
8
|
3
|
7
|
8
|
3. Lakukan pencampuran operasi, karena menggunakan array dengan panjang 8 byte maka algoritma menjadi :
i = 0 ; j = 0
for i = 0 to 8
j = (j + S[i] + K[i]) mod 8
swap S[i] dan S[j]
Iterasi 1
i = 0 ; j = 0
j = (j + S[i] + K[i]) mod 8
= (j + S[0] + K[0]) mod 8
= (0 + 0 + 7) mod 8
= 7
swap S[0] dan S[7], Sehingga array S :
|
Iterasi 2
i = 1 ; j = 7
j = (j + S[i] + K[i]) mod 8
= (7 + S[1] + K[1]) mod 8
= (7 + 1 + 8) mod 8
= 0
swap S[1] dan S[0], Sehingga array S :
| ||||||||||||||||
Iterasi 3
i = 2 ; j = 0
j = (j + S[i] + K[i]) mod 8
= (0 + S[2] + K[2]) mod 8
= (0 + 2 + 3) mod 8
= 5
swap S[2] dan S[5], Sehingga array S :
|
Iterasi 4
i = 3 ; j = 5
j = (j + S[i] + K[i]) mod 8
= (5 + S[3] + K[3]) mod 8
= (5 + 3 + 7) mod 8
= 7
swap S[3] dan S[7], Sehingga array S :
| ||||||||||||||||
Iterasi 5
i = 4 ; j = 7
j = (j + S[i] + K[i]) mod 8
= (7 + S[4] + K[4]) mod 8
= (7 + 4 + 8) mod 8
= 3
swap S[4] dan S[3], Sehingga array S :
|
Iterasi 6
i = 5 ; j = 3
j = (j + S[i] + K[i]) mod 8
= (3 + S[5] + K[5]) mod 8
= (3 + 2 + 3) mod 8
= 0
swap S[5] dan S[0], Sehingga array S :
| ||||||||||||||||
Iterasi 7
i = 6 ; j = 0
j = (j + S[i] + K[i]) mod 8
= (0 + S[6] + K[6]) mod 8
= (0 + 6 + 7) mod 8
= 5
swap S[6] dan S[5], Sehingga array S :
|
Iterasi 8
i = 7 ; j = 5
j = (j + S[i] + K[i]) mod 8
= (5 + S[7] + K[7]) mod 8
= (5 + 3 + 8) mod 8
= 0
swap S[7] dan S[0], Sehingga array S :
|
4. Proses Enkripsi, mengXORkan pseudo random byte dengan plainteks.
Plainteks : HELLO , planteks terdiri 5 karakter jadi ada 5 iterasi, dengan algoritma
i = ( i + 1 ) mod 8
j = ( j + S[i] ) mod 8
swap S[i] dan S[j]
t = (S[i] + S[j]) mod 8
K = S[t]
Iterasi 1
i = 0 ; j = 0
i = ( i + 1 ) mod 8
= ( 0 + 1) mod 8
= 1
dan
j = ( j + S[i] ) mod 8
= ( 0 + S[0] ) mod 8
= ( 0 + 3 ) mod 8
= 3
Swap S[i] dan S[j], yaitu S[1] S[3], sehingga array S menjadi :
t = (S[i] + S[j]) mod 8
= (S[1] + S[3] mod 8
= (4+7) mod 8
= 3
K = S[t] = S[3] = 7
Byte K di XORkan dengan Plainteks “H”
|
Iterasi 2
i = 1 ; j = 3
i = ( i + 1 ) mod 8
= ( 1 + 1) mod 8
= 2
dan
j = ( j + S[i] ) mod 8
= ( 3 + S[1] ) mod 8
= ( 3 + 4 ) mod 8
= 7
Swap S[i] dan S[j], yaitu S[2] S[7], sehingga array S menjadi :
t = (S[i] + S[j]) mod 8
= (S[2] + S[7] mod 8
= (2+5) mod 8
= 7
K = S[t] = S[7] = 5
Byte K di XORkan dengan Plainteks “E”
| ||||||||||||||||
Iterasi 3
i = 2 ; j = 7
i = ( i + 1 ) mod 8
= ( 2 + 1) mod 8
= 3
dan
j = ( j + S[i] ) mod 8
= ( 7 + S[3] ) mod 8
= ( 7 + 7 ) mod 8
= 6
Swap S[i] dan S[j], yaitu S[3] S[6], sehingga array S menjadi :
t = (S[i] + S[j]) mod 8
= (S[3] + S[6] mod 8
= (1+7) mod 8
= 0
K = S[t] = S[0] = 3
Byte K di XORkan dengan Plainteks “L”
|
Iterasi 4
i = 3 ; j = 6
i = ( i + 1 ) mod 8
= ( 3 + 1) mod 8
= 4
dan
j = ( j + S[i] ) mod 8
= ( 6 + S[4] ) mod 8
= ( 6 + 0 ) mod 8
= 6
Swap S[i] dan S[j], yaitu S[4] S[6], sehingga array S menjadi :
t = (S[i] + S[j]) mod 8
= (S[4] + S[6] mod 8
= (7+0) mod 8
= 7
K = S[t] = S[1] = 4
Byte K di XORkan dengan Plainteks “L”
| ||||||||||||||||
Iterasi 5
i = 4 ; j = 7
i = ( i + 1 ) mod 8
= ( 4 + 1) mod 8
= 5
dan
j = ( j + S[i] ) mod 8
= ( 7 + S[5] ) mod 8
= ( 7 + 6 ) mod 8
= 5
Swap S[i] dan S[j], yaitu S[5] S[5], sehingga array S menjadi :
t = (S[i] + S[j]) mod 8
= (S[5] + S[6] mod 8
= (6+6) mod 8
= 4
K = S[t] = S[4] = 1
Byte K di XORkan dengan Plainteks “O”
|
Proses XOR
H
|
E
|
L
|
L
|
O
| |
Plainteks
Pseudo random byte
Chiperteks
|
01001000
00000111
01001111
|
01000101
00000101
01000000
|
01001100
00000011
01001111
|
01001100
00000100
01001000
|
01001111
00000001
01001110
|
1. Inisialisasi S-Box (Array S) mode 8 byte
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
2. Inisialisasi S-Box (Array Kunci ) 4 byte kunci array, Kunci = JID
9
|
8
|
3
|
9
|
8
|
3
|
9
|
8
|
3. Lakukan pencampuran operasi, karena menggunakan array dengan panjang 8 byte maka algoritma menjadi :
i = 0 ; j = 0
for i = 0 to 8
j = (j + S[i] + K[i]) mod 8
swap S[i] dan S[j]
Iterasi 1
i = 0 ; j = 0
j = (j + S[i] + K[i]) mod 8
= (j + S[0] + K[0]) mod 8
= (0 + 0 + 9) mod 8
= 1
swap S[0] dan S[1], Sehingga array S :
|
Iterasi 2
i = 1 ; j = 1
j = (j + S[i] + K[i]) mod 8
= (1 + S[1] + K[1]) mod 8
= (1 + 0 + 8) mod 8
= 1
swap S[1] dan S[1], Sehingga array S :
| ||||||||||||||||
Iterasi 3
i = 2 ; j = 1
j = (j + S[i] + K[i]) mod 8
= (1 + S[2] + K[2]) mod 8
= (1 + 2+ 3) mod 8
= 6
swap S[2] dan S[6], Sehingga array S :
|
Iterasi 4
i = 3 ; j = 6
j = (j + S[i] + K[i]) mod 8
= (6 + S[3] + K[3]) mod 8
= (6 + 3 + 9) mod 8
= 2
swap S[3] dan S[2], Sehingga array S :
| ||||||||||||||||
Iterasi 5
i = 4 ; j = 2
j = (j + S[i] + K[i]) mod 8
= (2 + S[4] + K[4]) mod 8
= (2 + 4 + 8) mod 8
= 6
swap S[4] dan S[6], Sehingga array S :
|
Iterasi 6
i = 5 ; j = 6
j = (j + S[i] + K[i]) mod 8
= (6 + S[5] + K[5]) mod 8
= (3 + 5 + 3) mod 8
= 3
swap S[5] dan S[3], Sehingga array S :
| ||||||||||||||||
Iterasi 7
i = 6 ; j = 3
j = (j + S[i] + K[i]) mod 8
= (3 + S[6] + K[6]) mod 8
= (3 + 4 + 9) mod 8
= 0
swap S[6] dan S[0], Sehingga array S :
|
Iterasi 8
i = 7 ; j = 0
j = (j + S[i] + K[i]) mod 8
= (0 + S[7] + K[7]) mod 8
= (0 + 7 + 8) mod 8
= 7
swap S[7] dan S[7], Sehingga array S :
|
4. Proses Enkripsi, mengXORkan pseudo random byte dengan plainteks.
Plainteks : HELLO , planteks terdiri 5 karakter jadi ada 5 iterasi, dengan algoritma
i = ( i + 1 ) mod 8
j = ( j + S[i] ) mod 8
swap S[i] dan S[j]
t = (S[i] + S[j]) mod 8
K = S[t]
Iterasi 1
i = 0 ; j = 0
i = ( i + 1 ) mod 8
= ( 0 + 1) mod 8
= 1
dan
j = ( j + S[i] ) mod 8
= ( 0 + S[0] ) mod 8
= ( 0 + 4 ) mod 8
= 4
Swap S[i] dan S[j], yaitu S[1] S[4], sehingga array S menjadi :
t = (S[i] + S[j]) mod 8
= (S[1] + S[4] mod 8
= (2+0) mod 8
= 2
K = S[t] = S[2] = 3
Byte K di XORkan dengan Plainteks “H”
|
Iterasi 2
i = 1 ; j = 4
i = ( i + 1 ) mod 8
= ( 1 + 1) mod 8
= 2
dan
j = ( j + S[i] ) mod 8
= ( 4 + S[1] ) mod 8
= ( 4 + 2 ) mod 8
= 6
Swap S[i] dan S[j], yaitu S[2] S[6], sehingga array S menjadi :
t = (S[i] + S[j]) mod 8
= (S[2] + S[6] mod 8
= (1+3) mod 8
= 4
K = S[t] = S[4] = 0
Byte K di XORkan dengan Plainteks “E”
| ||||||||||||||||
Iterasi 3
i = 2 ; j = 6
i = ( i + 1 ) mod 8
= ( 2 + 1) mod 8
= 3
dan
j = ( j + S[i] ) mod 8
= ( 6 + S[3] ) mod 8
= ( 6 + 5 ) mod 8
= 3
Swap S[i] dan S[j], yaitu S[3] S[3], sehingga array S menjadi :
t = (S[i] + S[j]) mod 8
= (S[3] + S[3] mod 8
= (5+5) mod 8
= 2
K = S[t] = S[2] = 1
Byte K di XORkan dengan Plainteks “L”
|
Iterasi 4
i = 3 ; j = 3
i = ( i + 1 ) mod 8
= ( 3 + 1) mod 8
= 4
dan
j = ( j + S[i] ) mod 8
= ( 3 + S[4] ) mod 8
= ( 3 + 0 ) mod 8
= 3
Swap S[i] dan S[j], yaitu S[4] S[3], sehingga array S menjadi :
t = (S[i] + S[j]) mod 8
= (S[4] + S[3] mod 8
= (5+0) mod 8
= 5
K = S[t] = S[5] = 6
Byte K di XORkan dengan Plainteks “L”
| ||||||||||||||||
Iterasi 5
i = 4 ; j = 3
i = ( i + 1 ) mod 8
= ( 4 + 1) mod 8
= 5
dan
j = ( j + S[i] ) mod 8
= ( 3 + S[5] ) mod 8
= ( 3 + 6 ) mod 8
= 1
Swap S[i] dan S[j], yaitu S[5] S[1], sehingga array S menjadi :
t = (S[i] + S[j]) mod 8
= (S[5] + S[1] mod 8
= (2+6) mod 8
= 0
K = S[t] = S[0] = 4
Byte K di XORkan dengan Plainteks “O”
|
Proses XOR
H
|
E
|
L
|
L
|
O
| |
Plainteks
Pseudo random byte
Chiperteks
|
01001000
00000011
01001011
|
01000101
00000000
01000111
|
01001100
00000001
01001101
|
01001100
00000110
01001010
|
01001111
00000100
01001011
|
Kunci
|
Plainteks
|
Chiperteks
|
HID
|
01001000010001010100110001001100 01001111
|
0100111101000000010011110100100001001110
|
JID
|
01001000010001010100110001001100 01001111
|
0100101101000111010011010100101001001011
|
Dengan menghitung banyaknya nilai bit yang berbeda dari masing-masing keluaran simulasi, dapat ditentukan bahwa nilai Avalanche Effect dari proses enkripsi Algoritma Rivest Code 4 (RC4) sebagai berikut:
Dari hasil pengukuran Avalanche Effect pada simulasi diatas, dapat disimpulkan bahwa kinerja proses enkripsi pada algoritma RC4 buruk karena hanya menghasilkan nilai Avalanche Effect sebesar 20%.
0 Comments
Post a Comment