Monday, January 16, 2017

Proses Enkripsi Permutasi DES (Data Encryption Standard)

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).

0 komentar:

Post a Comment