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.
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.
Permutation (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):
|
Aturan IP (Permutasi Awal) |
|
Aturan IP invers |
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).
|
Aturan Permutasi Kompresi PC-1 |
|
C0 - D0 |
|
Aturan pergeseran bit pada tiap putaran C1D1 - C16D16 |
|
C1-D1 sampai C5-D5 |
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
|
Aturan Matriks PC-2 |
|
K4-K9 |
|
K10-K15 |
|
K16 |
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).
|
R1 |
|
R2 |
|
R3 |
|
R4 |
|
R5 |
|
R6 |
|
R7 |
|
R8 |
|
R9 |
|
R10 |
|
R11 |
|
R12 |
|
R13 |
|
R14 |
|
R15 |
|
R16 |
0 komentar: