33
Deretan
non-linear
bit
output
merupakan
fungsi
dari
input
bit
adalah
maksimum, bernilai 3.
S-Box
pada Serpent
dibuat
atas
sifat-sifat
tersebut,
dimana
ide
tersebut
berasal
dari
RC4.
Serpent
menggunakan
matrix yang
terdiri
dari
32
array
yang
masing-masing memiliki 16 nilai. 32 baris pertama matrix tersebut merupakan 32
baris S-Box pada DES dan ditransformasi dengan
menukar
nilai-nilai pada array
ke-r tergantung pada
nilai pada
nilai-nilai di dalam array
yang ke
(r+1) dan pada
string
awal
yang
mewakili
key.
Jika
pada
array
hasil
terdapat
sifat-sifat
diferensial atau
linear,
maka array
tersebut akan disimpan sebagai barisan S-Box
pada Serpent. Hal ini diulang hingga dihasilkan delapan baris S-Box.
Misalkan, serpent[.] adalah array yang mengandung 4 bit terakhir pada
masing-masing karakter dari 16 karakter ASCII sebagai berikut
sboxesforserpent. Kemudian sbox[.][.] merupakan array dengan ukuran 32x16,
mengandung
32
baris
dari
8
S-Box DES,
dimana
sbox[r][.]
melambangkan
baris
ke-r. Fungsi
swapentries(., .) berguna
untuk
menukar
kedua
nilai
yang
dikirimkannya.
Maka
algoritma
untuk
mendapatkan S-Box pada
Serpent
dapat
dijelaskan pada pseudocode sebagai berikut:
MODUL S-BoxGenerator
Index = 0
ULANG
Current_SBox = Index modulo 32
MULAI i BERNILAI 0 HINGGA 15 LAKUKAN
j = SBox[(Current_SBox + 1) modulo 32][i]
|