Algoritma DES (Data Encryption Standard)
Sebagai salah satu sistem kriptografi simetris, DES tergolong jenis
cipher blok. DES dikatakan enkripsi blok karena pemrosesan data baik
enkripsi maupun dekripsi, diimplementasikan per blok (dalam hal ini 8
byte). Proses pada algoritma DES terbilang panjang, bahkan jauh lebih
panjang daripada Elgamal, tapi pada implementasinya ternyata proses
komputasinya dapat berjalan lebih cepat. Mengapa demikian? karena pada
DES tidak ada operasi aritmatika yang berjalan seperti halnya pada
Elgamal. Proses yang berjalan pada DES hanya sebatas pergeseran bit-bit
pada tiap blok enkripsi/dekripsi.
Pertama yang harus kita ketahui dari algoritma ini adalah Skema global yang ada pada algoritma DES, diuraikan sebagai berikut:
a. Blok plainteks dipermutasi dengan permutasi awal (IP, Initial Permutation).
b. Hasil permutasi awal kemudian dienciphering sebanyak 16 kali (16
putaran). Setiap putaran menggunakan kunci internal yang berbeda dengan
perhitungan LiRi dengan 1 ≤ i ≤ 16.
c. Hasil enciphering kemudian dipermutasi dengan matriks permutasi
balikan (invers initial permutation atau IP-1) menjadi blok cipherteks.
Permutasi Awal (Initial Permutation)
Sebelum putaran pertama, terhadap blok plainteks dilakukan permutasi
awal (Initial Permutation atau IP). Tujuan permutasi awal adalah
mengacak plainteks sehingga urutan-bit-bit di dalamnya berubah. Lihat
pada gambar dibawah, Matriks pada Tabel (a) sebagai plainteks masukan,
kemudian dilakukan pengacakan dengan menggunakan matriks permutasi awal
Tabel (b):
Setelah melewati Permutasi Awal, plainteks yang akan disandikan
kemudian dibagi menjadi dua blok (ditunjukkan dengan warna yang berbeda
pada Tabel (b)), yaitu blok atas dan blok bawah yang masing‐masing
lebarnya 4 byte (32-bit).
Pembangkitan Kunci Internal DES
Pada algoritma DES, dibutuhkan kunci internal sebanyak 16 buah, yaitu
K1, K2,…,K16. Kunci-kunci internal ini dapat dibangkitkan sebelum proses
enkripsi atau bersamaan dengan proses enkripsi. Kunci internal
dibangkitkan dari kunci eksternal yang diberikan oleh pengguna. Kunci
eksternal pada DES panjangnya 64-bit atau 8 karakter seperti pada Tabel
(c) dibawah.
Misalkan kunci eksternal yang tersusun atas 64-bit adalah K. Kunci
eksternal ini menjadi masukan untuk permutasi dengan menggunakan matriks
kompresi PC-1 seperti pada Tabel (d).
Dalam permutasi ini, tiap-bit kedelapan dari delapan byte kunci
diabaikan (Tabel (c) dengan kolom yang berwarna gelap). Hasil
permutasinya adalah sepanjang 56-bit, sehingga dapat dikatakan panjang
kunci DES adalah 56-bit.
Selanjutnya, 56-bit ini dibagi menjadi 2 bagian, atas dan bawah, yang
masing-masing panjangnya 28-bit, dan masing-masing disimpan di dalam C0
dan D0.
C0: berisi-bit-bit dari K pada sisi gelap tabel (d)
D0: berisi-bit-bit dari K pada sisi putih tabel (d)
Selanjutnya, kedua bagian digeser ke kiri (left shift) sepanjang satu
atau dua-bit bergantung pada tiap putaran. Jumlah pergeseran pada tiap
putaran ditunjukkan pada Tabel (e).
Misalkan (Ci, Di) menyatakan penggabungan Ci dan Di. (Ci-1, Di-1)
diperoleh dengan menggeser Ci dan Di satu atau dua-bit. Setelah
Pergeseran-bit, (Ci, Di) mengalami permutasi kompresi dengan menggunakan
matriks PC-2 seperti pada Tabel (f).
Dengan permutasi ini, kunci internal Ki diturunkan dari (Ci, Di) yang
dalam hal ini Ki merupakan panggabungan-bit-bit Ci pada sisi gelap
tabel (f), dengan-bit-bit Di pada sisi putih tabel (f).
Setiap kunci internal Ki mempunyai panjang 48-bit. Proses Pembangkitan
kunci-kunci internal dapat dilihat pada gambar berikut ini :
Proses Enkripsi DES
Proses enkripsi terhadap blok plainteks dilakukan setelah permutasi
awal. Setiap blok plainteks mengalami 16 kali putaran enkripsi. Untuk
setiap putaran, digambarkan seperti gambar berikut :
Setiap putaran enkripsi DES secara matematis dinyatakan sebagai :
Dengan f adalah suatu fungsi yang ditunjukkan pada Gambar berikut :
E adalah fungsi ekspansi yang memperluas blok Ri – 1 32-bit menjadi
blok 48-bit. Fungsi ekspansi direalisasikan dengan matriks permutasi
ekspansi :
Hasil ekpansi, yaitu E(Ri – 1) di-XOR-kan dengan Ki menghasilkan vektor A 48-bit:
Matriks A dikelompokkan menjadi 8 kelompok, masing-masing 6-bit, dan
menjadi masukan bagi proses substitusi. Proses substitusi dilakukan
dengan menggunakan delapan buah kotak-S (S-box), S1 sampai S8. Setiap
kotak-S menerima masukan 6-bit dan menghasilkan keluaran 4-bit. Kelompok
6-bit pertama menggunakan S1, kelompok 6-bit kedua menggunakan S2, dan
seterusnya. Kedelapan kotak-S tersebut ditunjukkan pada gambar di bawah
ini (klik untuk memperbesar).
Keluaran proses substitusi adalah vektor B yang panjangnya 32-bit.
Vektor B menjadi masukan untuk proses permutasi. Tujuan permutasi adalah
untuk mengacak hasil proses substitusi kotak-S. Permutasi dilakukan
dengan menggunakan matriks permutasi P (P-box) sbb :
Bit-bit P(B) merupakan keluaran dari fungsi f.
Akhirnya, bit-bit P(B) di-XOR-kan dengan Li–1 untuk mendapatkan Ri
Jadi, keluaran dari putaran ke-i adalah
Skema perolehan Ri
Permutasi Akhir (Invers Inisial Permutasi)
Permutasi terakhir dilakukan setelah 16 kali putaran terhadap gabungan
blok kiri dan blok kanan. Permutasi menggunakan matriks permutasi awal
balikan (IP-1 ) sbb:
Proses Dekripsi DES
Proses dekripsi terhadap cipherteks merupakan kebalikan dari proses
enkripsi. DES menggunakan algoritma yang sama untuk proses enkripsi dan
dekripsi. Jika pada proses enkripsi urutan kunci internal yang digunakan
adalah K1, K2, …, K16, maka pada proses dekripsi urutan kunci yang
digunakan adalah K16, K15, …, K1. Setiap putaran 16, 15, …, 1, keluaran
pada proses dekripsi adalah
dalam hal ini, (R16, L16) adalah blok masukan awal untuk proses dekripsi.
Blok (R16, L16) diperoleh dengan mempermutasikan cipherteks dengan
matriks permutasi IP. Pra-keluaran dari proses dekripsi adalah adalah
(L0, R0). Dengan permutasi awal IP-1 akan didapatkan kembali blok
plainteks semula. Kunci-kunci dekripsi diperoleh dengan menggeser Ci dan
Di dengan cara yang sama seperti pada proses enkripsi, tetapi
pergeseran kiri (left shift) diganti menjadi pergeseran kanan (right
shift).