Data Encryption Standard DES Aisyatul Karima 2012 Outline

  • Slides: 40
Download presentation
Data Encryption Standard - DES Aisyatul Karima, 2012

Data Encryption Standard - DES Aisyatul Karima, 2012

Outline Sejarah DES Enkripsi DES Implementasi Hardware dan Software DES Keamanan DES

Outline Sejarah DES Enkripsi DES Implementasi Hardware dan Software DES Keamanan DES

Sejarah DES Algoritma DES dikembangkan di IBM dibawah kepemimpinan W. L. Tuchman pada tahun

Sejarah DES Algoritma DES dikembangkan di IBM dibawah kepemimpinan W. L. Tuchman pada tahun 1972. Algoritma ini didasarkan pada algoritma LUCIFER yang dibuat oleh Horst Feistel. Algoritma ini telah disetujui oleh National Bureau of Standard (NBS) setelah penilaian kekuatannya oleh National Security Agency (NSA) Amerika Serikat.

Tinjauan Umum DES termasuk ke dalam sistem kriptografi simetri dan tergolong jenis cipher blok.

Tinjauan Umum DES termasuk ke dalam sistem kriptografi simetri dan tergolong jenis cipher blok. DES beroperasi pada ukuran blok 64 bit. DES mengenkripsikan 64 bit plainteks menjadi 64 bit cipherteks dengan menggunakan 56 bit kunci internal (internal key) atau upa-kunci (subkey). Kunci internal dibangkitkan dari kunci eksternal (external key) yang panjangnya 64 bit.

Skema global dari algoritma DES adalah sebagai berikut :

Skema global dari algoritma DES adalah sebagai berikut :

Skema global dari algoritma DES adalah sebagai berikut : 1. Blok plainteks dipermutasi dengan

Skema global dari algoritma DES adalah sebagai berikut : 1. Blok plainteks dipermutasi dengan matriks permutasi awal (initial permutation atau IP). 2. Hasil permutasi awal kemudian di-enciphering- sebanyak 16 kali (16 putaran). Setiap putaran menggunakan kunci internal yang berbeda. 3. Hasil enciphering kemudian dipermutasi dengan matriks permutasi balikan (invers initial permutation atau IP-1 ) menjadi blok cipherteks

Skema DES yang lebih rinci

Skema DES yang lebih rinci

Enkripsi DES P = 0123456789 ABCDEF K = 133457799 BBCDFF 1 P = 0123456789

Enkripsi DES P = 0123456789 ABCDEF K = 133457799 BBCDFF 1 P = 0123456789 ABCDEF Dalam binary menjadi: P = 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

Langkah 1 : Encoding setiap 64 bit data pada Plaintext dengan IP (Initial Permutation)

Langkah 1 : Encoding setiap 64 bit data pada Plaintext dengan IP (Initial Permutation) Urutan bit pada plaintext urutan ke 58 ditaruh diposisi 1, Urutan bit pada plaintext urutan ke 50 ditaruh di posisi 2, dst IP 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7 P = 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 IP = 1

Langkah 1 (Cont’d) : Encoding setiap 64 bit data pada Plaintext dengan IP (Initial

Langkah 1 (Cont’d) : Encoding setiap 64 bit data pada Plaintext dengan IP (Initial Permutation) IP 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7 P = 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 IP = 11

Langkah 1 (Cont’d) : Encoding setiap 64 bit data pada Plaintext dengan IP (Initial

Langkah 1 (Cont’d) : Encoding setiap 64 bit data pada Plaintext dengan IP (Initial Permutation) IP 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7 P = 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 IP = 1100 0000 1100 1111 0000 1010

Langkah 2 Pecah menjadi L 0 dan R 0. . . !!! Pecah IP

Langkah 2 Pecah menjadi L 0 dan R 0. . . !!! Pecah IP menjadi bagian kiri sebanyak 32 bit (L 0) dan kanan sebanyak 32 bit (R 0) IP = 1100 0000 1100 1111 0000 1010 L 0 R 0 Jadi L 0 = 1100 0000 1100 1111 R 0 = 1111 0000 1010

Langkah 3 Membangkitkan kunci eksternal K = 133457799 BBCDFF 1 K dalam binary: 1

Langkah 3 Membangkitkan kunci eksternal K = 133457799 BBCDFF 1 K dalam binary: 1 = 0001 3 = 0011 Ditulis berkelompok setiap 8 bit menjadi 00010011 Sehingga K menjadi 000100110100 01010111100110111100 110111110001

Langkah 4 Gunakan permutasi PC-1 57 49 41 33 25 17 9 1 58

Langkah 4 Gunakan permutasi PC-1 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 16 61 53 45 37 29 21 13 5 28 20 12 4 K= 000100110100 01010111100110111100 11011111 11110001 Maka: K+ = 1

Langkah 4 (Cont’d) PC-1 Gunakan permutasi 57 49 41 33 25 17 9 1

Langkah 4 (Cont’d) PC-1 Gunakan permutasi 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 16 61 53 45 37 29 21 13 5 28 20 12 4 K= 000100110100 01010111100110111100 11011111 11110001 K+ =1 Maka:

Langkah 4 (Cont’d) Gunakan permutasi PC-1 57 49 41 33 25 17 9 1

Langkah 4 (Cont’d) Gunakan permutasi PC-1 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 16 61 53 45 37 29 21 13 5 28 20 12 4 K= 000100110100 01010111100110111100 110111110001 K dipermutasi menggunakan tabel PC-1 di atas sehingga 64 bit key menjadi hanya 56 bit key K+ =1111000 0110011 0010101111 0101010 1011001 1001111 0001111

Langkah 5 Selanjutnya bagi Key menjadi 2 bagian kanan dan kiri, C 0 dan

Langkah 5 Selanjutnya bagi Key menjadi 2 bagian kanan dan kiri, C 0 dan D 0 yang setiap bagian 28 bit panjangnya Dari K+ =1111000 0110011 0010101111 0101010 1011001111 0001111 C 0 Kita mendapatkan C 0 = 1111000 0110011 0010101111 D 0 = 0101010 1011001111 0001111 D 0

Langkah 6 Setelah mendapatkan C 0 dan D 0, sekarang kita membuat 6 blok

Langkah 6 Setelah mendapatkan C 0 dan D 0, sekarang kita membuat 6 blok Cn dan Dn yang setiap blok berasal dari Cn-1 dan Dn-1. Selanjutnya, kedua bagian digeser ke kiri (left shift) sepanjang satu atau dua bit bergantung pada tiap putaran. Operasi pergeseran bersifat wrapping atau round-shift.

Pergeseran tiap putaran berdasarkan tabel di bawah ini Putaran ke Jumlah pergeseran bit 1

Pergeseran tiap putaran berdasarkan tabel di bawah ini Putaran ke Jumlah pergeseran bit 1 1 2 1 3 2 4 2 5 2 6 2 7 2 9 1 10 2 11 2 12 2 14 2 15 2 16 1

Langkah 7 Dari C 0 dan D 0 awal kita mendapatkan : C 0

Langkah 7 Dari C 0 dan D 0 awal kita mendapatkan : C 0 = 11110000110010101111 D 0 = 01010110011110001111 Dari keterangan tabel sebelumnya maka kita geser C 0 dan D 0 ke kiri sebanyak 1 kali (berdasarkan slide di halaman sebelumnya) C 10 = 11100001100101011111 = 11110000110010101111 D 10 = 10101100111100011110 = 01010110011110001111 Dan lakukan seterusnya sampai C 16 dan D 16 = 11000011001010111111 C 216 = 11100001100101011111 = 0000110010101111 = 0011001010111100 = 1100101011110000 = 00110010101111000011 = 11001010111100001100 = 0010101111000011 = 01011111111000011001 = 01010111100001100101 = 01011110000110010101 = 0111100001100101 = 11111110000110010101 = 11111000011001010111 = 1111000011001010111 1 = 0101011110000110 3 4 5 6 7 8 9 10 11 12 13 14 15 = 01011001111000111101 D 216 = 10101100111100011110 = 010101100111100011110101 = 010110011110001111010101 = 01100111100011110101 = 10011110001111010101 = 01100111101010110 = 10011110101011001 = 11110001111010101100 = 11000111101010110011 = 00011110101011001111 = 01111010101100111100 = 11101010110011110001 = 10101011001111000111 = 0101011001111000111 1 = 00111101010110011 3 4 5 6 7 8 9 10 11 12 13 14 15

Langkah 8 Gunakan permutasi PC-2 14 17 11 24 1 5 3 28 15

Langkah 8 Gunakan permutasi PC-2 14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32 Untuk C 1 D 1 kita mendapatkan C 1 D 1 = 1110000 1100110 0101010 1011111 1010101 0110011110 Dipermutasi menjadi K 1 = 000110 110000 00101111 111111 000001 110010

Langkah 8 (Cont’d) Untuk subkey yang lain kita mendapatkan K 2 = 011110 011010

Langkah 8 (Cont’d) Untuk subkey yang lain kita mendapatkan K 2 = 011110 011010 111011 011001 110110 111100 100111 100101 K 3 = 010101 011111 11001010 010000 101100 111110 011001 K 4 = 011100 101010 110111 010110 110011 010100 011101 K 5 = 011111 001110 110000 000111 1110101 001110 101000 K 6 = 011000 111010 010100 111110 010100 000111 101100 101111 K 7 = 111011 001000 010010 110111 111101 100010 111100 K 8 = 111101 111000 101000 111010 110000 010011 101111 111011 K 9 = 111000 001101 101111 101011 111011 011110 000001 K 10 = 101100 011111 001101 000111 101110 100100 011001 001111 K 11 = 001000 010101 111111 010011 110111 101101 001110 000110 K 12 = 011101 010111 000111 110101 100101 000110 011111 101001 K 13 = 100101 111100 010111 010001 111110 101011 101001 000001 K 14 = 010111 110100 001110 110111 111100 1011100 111010 K 15 = 101111 111001 0001101 001111 010011 111100 001010 K 16 = 110010 110011 110110 001011 000011 100001 011111 110101

Langkah 9 Enchipering Setiap blok plainteks mengalami 16 kali putaran enciphering. Setiap putaran enciphering

Langkah 9 Enchipering Setiap blok plainteks mengalami 16 kali putaran enciphering. Setiap putaran enciphering merupakan jaringan Feistel yang secara matematis dinyatakan sebagai Li = Ri – 1 Ri = Li – 1 f(Ri – 1, Ki) Untuk menghitung fungsi f , pertama kita perluas setiap blok dari Ri-1 dari 32 bit menjadi 48 bit dengan menggunakan tabel yang mengulang beberapa bit daridi Rn-1. Tabel ini dikenal dengan fungsi E.

Langkah 10 E-Bit Selection Table 32 1 2 3 4 5 6 7 8

Langkah 10 E-Bit Selection Table 32 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 1 R 0 = 1111 0000 1010 menjadi E(R 0) = 011110 100001 010101

Langkah 11 Selanjutnya untuk menghitung f XOR hasil dari E(Rn-1) dengan Key Kn K

Langkah 11 Selanjutnya untuk menghitung f XOR hasil dari E(Rn-1) dengan Key Kn K 1 = 000110 110000 00101111 111111 000001 110010 E(R 0) = 011110 100001 010101 K 1 E(R 0) = 011000 010001 01111010 100001 100110 010100 100111 Langkah 12 Selanjutnya gunakan setiap 6 bit hasil dari K 1 E(R 0) untuk menjadi alamat tabel yang dinamakan S-Box. Setiap kelompok 6 bit akan memberikan alamat pada masing-masing S-box yang berbeda. Jika ditulis dengan matematis S 1(B 1)S 2(B 2)S 3(B 3)S 4(B 4)S 5(B 5)S 6(B 6)S 7(B 7)S 8(B 8)

Kedelapan S-box S 1 14 4 13 1 2 15 11 8 3 10

Kedelapan S-box S 1 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 S 2 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15 13 8 10 1 15 4 2 11 6 7 12 0 5 14 9 3

S 3 10 0 9 14 6 3 15 5 1 13 12 7

S 3 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7 1 10 13 0 6 9 8 7 4 15 14 3 11 5 12 2 S 4 7 13 14 3 0 6 6 15 13 8 11 5 10 6 9 0 12 11 3 15 0 6 10 9 10 1 2 8 0 4 7 2 12 1 10 14 9 7 13 15 1 3 14 5 2 8 4 4 5 11 12 7 2 14 1 13 3 8 9 5 11 12 4 15

S 5 2 12 4 1 7 10 11 6 8 5 3 14

S 5 2 12 4 1 7 10 11 6 8 5 3 14 11 2 12 4 7 13 1 5 0 15 10 4 2 1 11 10 13 7 8 15 9 12 11 8 12 7 2 13 6 15 0 1 14 15 13 0 14 9 3 9 8 16 5 6 3 0 14 9 10 4 5 3 S 6 12 1 10 15 9 2 6 8 0 13 9 5 6 1 13 14 0 11 3 8 3 7 0 4 10 1 13 11 6 4 2 7 12 9 14 15 5 2 8 12 2 12 9 5 15 10 11 14 4 3 3 4 14 7 7 0 5 11 8 13

S 7 4 11 2 14 15 0 8 13 3 12 9 7

S 7 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11 S 8

Cara Menggunakan S-Box Misal kita menghitung S 1(B) dengan B = 011011 dan menggunakan

Cara Menggunakan S-Box Misal kita menghitung S 1(B) dengan B = 011011 dan menggunakan tabel S 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 3 15 12 8 2 4 9 1 7 3 14 10 0 6 13 1 2 5 11 1. Gunakan bit awal dan akhir sebagai penanda baris. Dalam hal ini dengan 01 dimana desimalnya adalah 1 jadi ambil baris 1 2. Gunakan bit pertengahan antara bit awal dan akhir sebagai penanda kolom. Dalam hal ini 1101 dimana desimalnya adalah 13 jadi ambil kolom ke 13 3. Gunakan perpotongan baris dan kolom sebagai hasilnya, yang dalam hal ini adalah 5, sehingga hasil dari S 1(B) = 0101

Langkah 13 K 1 E(R 0) = 011000 010001 01111010 100001 100110 010100 100111.

Langkah 13 K 1 E(R 0) = 011000 010001 01111010 100001 100110 010100 100111. Sehingga kita mendapatkan S 1(B 1)S 2(B 2)S 3(B 3)S 4(B 4)S 5(B 5)S 6(B 6)S 7(B 7)S 8(B 8) = 0101 1100 1000 0010 1011 0101 1001 0111 Langkah 14 Langkah akhir perhitungan f adalah dengan melakukan permutasi pada output dari S-Box dengan tabel P 16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25 Jadi f(R 0 , K 1 ) = 0010 0011 0100 1010 1001 1011

Kita mendapatkan L 0 = 1100 0000 1100 1111 f(R 0 , K 1

Kita mendapatkan L 0 = 1100 0000 1100 1111 f(R 0 , K 1 ) = 0010 0011 0100 1010 1001 1011 Langkah 15 Jadi R 1 = L 0 + f(R 0 , K 1 ) = 1100 0000 1100 1111 0010 0011 0100 1010 1001 1011 = 1110 1111 0100 1010 0101 0100 Dalam putaran selanjutnya kita mendapatkan L 2=R 1 Dan menghitung R 2 = L 1 + f(R 1 , K 2 ) dan seterusnya selama 16 putaran

Langkah 16 Setelah 16 putaran kita akan mendapatkan L 16 dan R 16 ,

Langkah 16 Setelah 16 putaran kita akan mendapatkan L 16 dan R 16 , kemudian lakukan reverse menjadi R 16 L 16 dan lakukan permutasi terakhir yaitu IP-1 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 38 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25 Jika kita telah menyelesaikan 16 putaran maka akan mendapatkan L 16 = 0100 0011 0010 0011 0100 R 16 = 0000 1010 0100 1101 1001 0101 Kita reverse menjadi : R 16 L 16 = 00001010 01001100 110110010101 01000010 00110010 00110100 IP-1 = 10000101 11101000 00010011 01010100 00001111 00001010 10110100 00000101

Langkah 17 Hasil Akhir IP-1 = 10000101 11101000 00010011 01010100 00001111 00001010 10110100 00000101

Langkah 17 Hasil Akhir IP-1 = 10000101 11101000 00010011 01010100 00001111 00001010 10110100 00000101 Jika dalam format hexadecimal menjadi 85 E 813540 F 0 AB 405. Jadi enkripsi dari P = 0123456789 ABCDEF Menjadi C = 85 E 813540 F 0 AB 405.

Implementasi Hardware dan Software DES sudah diimplementasikan dalam bentuk perangkat keras. Dalam bentuk perangkat

Implementasi Hardware dan Software DES sudah diimplementasikan dalam bentuk perangkat keras. Dalam bentuk perangkat keras, DES diimplementasikan di dalam chip. Setiap detik chip ini dapat mengenkripsikan 16, 8 juta blok (atau 1 gigabit per detik). Implementasi DES ke dalam perangkat lunak dapat melakukan enkripsi 32. 000 blok per detik (pada komputer mainframe IBM 3090).

Keamanan DES Isu-isu yang menjadi perdebatan kontroversial menyangkut keamanan DES: 1. Panjang kunci 2.

Keamanan DES Isu-isu yang menjadi perdebatan kontroversial menyangkut keamanan DES: 1. Panjang kunci 2. Jumlah putaran 3. Kotak-S

Keamanan DES # Panjang kunci eksternal DES hanya 64 bit atau 8 karakter, itupun

Keamanan DES # Panjang kunci eksternal DES hanya 64 bit atau 8 karakter, itupun yang dipakai hanya 56 bit. Pada rancangan awal, panjang kunci yang diusulkan IBM adalah 128 bit, tetapi atas permintaan NSA, panjang kunci diperkecil menjadi 56 bit. Alasan pengurangan tidak diumumkan. Tetapi, dengan panjang kunci 56 bit akan terdapat 256 atau 72. 057. 594. 037. 927. 936 kemungkinan kunci. Jika diasumsikan serangan exhaustive key search dengan menggunakan prosesor paralel mencoba setengah dari jumlah kemungkinan kunci itu, maka dalam satu detik dapat dikerjakan satu juta serangan. Jadi seluruhnya diperlukan 1142 tahun untuk menemukan kunci yang benar. Tahun 1998, Electronic Frontier Foundation (EFE) merancang dan membuat perangkat keras khusus untuk menemukan kunci DES secara exhaustive search key dengan biaya $250. 000 dan diharapkan dapat menemukan kunci selama 5 hari. Tahun 1999, kombinasi perangkat keras EFE dengan kolaborasi internet yang melibatkan lebih dari 100. 000 komputer dapat menemukan kunci DES kurang dari 1 hari.

Keamanan DES #Jumlah putaran Sebenarnya, delapan putaran sudah cukup untuk membuat cipherteks sebagai fungsi

Keamanan DES #Jumlah putaran Sebenarnya, delapan putaran sudah cukup untuk membuat cipherteks sebagai fungsi acak dari setiap bit plainteks dan setiap bit cipherteks. Jadi, mengapa harus 16 kali putaran? Dari penelitian, DES dengan jumlah putaran yang kurang dari 16 ternyata dapat dipecahkan dengan knownplaintext attack lebih cepat daripada dengan brute force attack.

Keamanan DES #Kotak-S Pengisian kotak-S DES masih menjadi misteri tanpa ada alasan mengapa memilih

Keamanan DES #Kotak-S Pengisian kotak-S DES masih menjadi misteri tanpa ada alasan mengapa memilih konstanta-konstanta di dalam kotak itu.

Referensi : Miles E Smid & Dennis K Brandstad (1988). The Data Encryption Standart

Referensi : Miles E Smid & Dennis K Brandstad (1988). The Data Encryption Standart Past and Future. National Institute of Standards and Technology Coppersmith, D (1994). The Data Encryption Standart (DES) and Its Strength Against Attack. IBM Seung-Jo Han (1996). The improved Data Encryption Standard (DES) Algorithm. Heang-Soo Oh, Jongan Park