1. Data Encryption Standard (DES) adalah algoritma enkripsi blok yang mengenkripsi blok plaintext sepanjang 64 bit menggunakan key 56 bit.
2. DES bekerja berdasarkan struktur Feistel cipher dimana plaintext dibagi menjadi dua bagian dan dioperasikan secara berulang menggunakan subkey yang dihasilkan dari key utama.
3. Proses enkripsi DES terdiri atas inisial permutasi, pemisahan plaintext, operasi XOR, S-box, dan permutasi akhir
2. Data Encryption Standard (DES)
• Mengenkripsi blok plaintext
sepanjang 64 bit
• Key yang digunakan sepanjang 56 bit
• Each round of DES is a Feistel cipher
dimana, i = 1, 2, 3, …., 16
Li-1
Ri-1 ,K1
Ri-1
Li Ri
Ki
3. Struktur DES
• Step 1: Create 16
subkeys, each round
uses a different 48-bit
subkey
• Step 2: Encode each
64-bit block of data.
4.
5.
6.
7. Membangkitkan
Round Key (1)
• Setelah melalui proses permutasi,
selanjutnya adalah proses Shift Left
• Cipher key sepanjang 56 bit dibagi 2 bagian
(2 × 28 bit) kemudian tiap bagian digeser 1
atau 2 bit ke kiri, sesuai urutan round yaitu :
9. Membangkitkan
Round Key (2)
• Setelah melalui proses Shift Left, selanjutnya adalah Kompresi D-Box
untuk mengubah 56 bit cipher key menjadi 48 bit round key / subkey
• Proses memperoleh 48 bit round key menggunakan tabel PC-2
berikut :
11. Proses Enkripsi 64 Bit Plaintext
• Permutasi awal
• Membagi plaintext menjadi 2, bagian kiri Li dan bagian kanan Ri,
dimana, i = 1, 2, 3, …., 16
• Bagian Kanan Ri-1 menjadi bagian kiri Li
• Menghitung fungsi Feistel (f) dengan input bagian kanan Ri-1 dan
subkey Kn, dimana n = 1, 2, 3, …., 16
• Operasi XOR antara bagian kiri Li-1 dan fungsi Feistel (f), kemudian
menjadi bagian kanan Ri
• Permutasi akhir
12. Initial Permutation (IP)
• Plaintext sepanjang 64 bit di-permutasi
berdasarkan tabel IP
• Pada tabel IP bit ke-1 adalah bit ke-58
dari plaintext, bit ke-2 adalah bit ke-50
dari plaintext, hingga bit terakhir adalah
bit ke-7 dari plaintext
• Bila M adalah plaintext, yaitu :
M = 0123456789ABCDEF
M = 0000 0001 0010 0011 0100 0101
0110 0111 1000 1001 1010 1011
1100 1101 1110 1111
• M di-permutasi menjadi IP
IP = 1100 1100 0000 0000 1100 1100
1111 1111 1111 0000 1010 1010
1111 0000 1010 1010
13. Membagi Plaintext Menjadi 2 Bagian
• Blok IP dibagi menjadi 2 yaitu bagian kiri L0 32 bit dan bagian
kanan R0 32 bit
• IP = 1100 1100 0000 0000 1100 1100 1111 1111 L0
1111 0000 1010 1010 1111 0000 1010 1010 R0
• L0 = 1100 1100 0000 0000 1100 1100 1111 1111
R0 = 1111 0000 1010 1010 1111 0000 1010 1010
L1 = R0 = 1111 0000 1010 1010 1111 0000 1010 1010
• Bagian kanan R0 akan diletakkan pada bagian kiri L1 tanpa perubahan
dimana, i = 1, 2, 3, …., 16
14. Fungsi Feistel (f)
• Untuk menghitung
R1 = L0 ⊕ f(R0,K1), maka perlu
menghitung f(R0,K1)
• Untuk memperoleh f(R0,K1)
harus mengubah panjang R0
dari 32 bit menjadi 48 bit, untuk
melakukan hal tersebut perlu
menghitung fungsi E(Rn-1) yang
memiliki input 32 blok dan
output 48 bit
15. Tabel Seleksi Bit E
Contoh :
• Bit ke-1 adalah bit ke-32 dari R0
• Bit ke-2 adalah bit ke-1 dari R0
• Bit ke-48 adalah bit ke-1 dari R0
• R0 = 1111 0000 1010 1010
1111 0000 1010 1010
• E(R0) = 011110 100001 010101
010101 011110 100001
010101 010101
• Tiap blok yang awalnya 4 bit
kini berisi 6 bit
16. Operasi XOR antara Rn-1 dan K1
• Untuk memperoleh nilai dari fungsi Feistel maka perlu dihitung
Kn ⊕ E(Rn-1)
• Contoh :
K1 = 000110 110000 001011 101111111111 000111 000001 110010
E(R0) = 011110 100001 010101 010101 011110 100001 010101 010101
K1 ⊕ E(R0) = 011000 010001 011110 111010 100001 100110 010100 100111
• Hasil dari operasi XOR diatas adalah 8 blok yang terdiri atas 6 bit tiap
blok , kemudian perlu diubah agar menjadi 8 blok yang terdiri atas 4
bit tiap bloknya, menggunakan tabel S-Box
17. Aturan S-BOX
• Kn + E(Rn-1) =B1B2B3B4B5B6B7B8
• S1(B1)S2(B2)S3(B3)S4(B4)S5(B5)S6(B6)S7(B7)S8(B8)
• Bn terdiri atas 6 bit, bit ke-1 dan ke-6
menunjukkan bilangan biner dengan range 00 –
11 (0 – 3)
• Bit ke-2 sampai ke-5 pada Bn menunjukkan
bilangan biner dengan range 0000 – 1111 (0 – 15)
22. Contoh
• K1 ⊕ E(R0) = 011000 010001 011110 111010 100001 100110 010100 100111
S1(B1) S2(B2) S3(B3) S4(B4) S5(B5) S6(B6) S7(B7) S8(B8)
Misalkan S1(B1) = 011000, bit ke-1 adalah 0 dan bit ke-6 adalah 0, maka
desimalnya adalah 00 =0. Sedangkan bit ke-2 hingga 5 adalah 1100,
maka desimalnya adalah 12. Maka dapat kita lihat pada tabel S-Box 1,
diperoleh nilai desimal 5, yang mana binernya adalah 0101
Sehingga,
S1(B1) S2(B2) S3(B3) S4(B4) S5(B5) S6(B6) S7(B7) S8(B8)
0101 1100 1000 0010 1011 0101 1001 0111
23. Tabel Permutasi P
• Proses terakhir untuk memperoleh nilai fungsi feistel yaitu :
f = P(S1(B1)S2(B2)...S8(B8))
• Permutasi P menggunakan tabel permutasi, dimana inputnya adalah
32 bit dan outputnya adalah 32 bit
25. Proses Selanjutnya
• Pada putaran ke-2 adalah L2 = R1 dan R2 =L1 ⊕ f(R1, K2)
• Demikian seterusnya hingga putaran ke-16
• Pada putaran ke-16 yaitu blok L16 dan R16 akan ditukar posisinya
sehingga menjadi R16L16
• Kemudian dilakukan permutasi akhir berdasarkan tabel permutasi IP-1
27. Hasil Proses Enkripsi
• Plaintext M = 0123456789ABCDEF
• Original key K = 133457799BBCDFF1
• Ciphertext C = 85E813540F0AB405
• Untuk proses dekripsi adalah kebalikan dari proses enkripsi,
langkahnya sama seperti enkripsi, tetapi urutan subkey yang
digunakan terbalik
• Bila enkripsi subkey 1 untuk round 1 hingga subkey 16 untuk round 16
• Bila dekripsi subkey 16 untuk round 1 hingga subkey 1 untuk round 16