Kriptografi Data Encryption Standard DES What DES DES

  • Slides: 41
Download presentation
Kriptografi Data Encryption Standard - DES

Kriptografi Data Encryption Standard - DES

What DES ? DES merupakan algoritma yang sangat umum digunakan di dunia, meskipun banyak

What DES ? DES merupakan algoritma yang sangat umum digunakan di dunia, meskipun banyak yang menyatakan bahwa kunci yang digunakan terlalu pendek, karena DES hanya menggunakan kunci sepanjang 56 bit, sedangkan algoritma lain seperti blowfish mampun menggunakan kunci sepanjang 448 bit. Namun menurut percobaan yang dilakukan untuk mengetahui kunci yang digunakan dalam algoritma ini dibutuhkan sekitar 12 jam jika menggunakan 1. 000 komputer yang berkecepatan 1. 000 kunci per detiknya.

What DES ? � Algoritma DES dikembangkan di IBM dibawah kepemimpinan W. L. Tuchman

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

Why DES ? � DES digunakan untuk melindungi data dalam dunia elektronika khususnya di

Why DES ? � DES digunakan untuk melindungi data dalam dunia elektronika khususnya di bidang perbankan, finansial, dan e-commerce.

Why DES ? � Keunggulan: � 1. sederhana : pengirim harus memberikan kunci rahasianya

Why DES ? � Keunggulan: � 1. sederhana : pengirim harus memberikan kunci rahasianya kepada penerima pesan � 2. efisien : efektivitasnya tergantung pada pengawasan atas orang yang mengetahui kunci rahasianya

How DES ? � DES termasuk ke dalam sistem kriptografi simetri dan tergolong jenis

How DES ? � 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-encipheringsebanyak 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

DES - The 16 Rounds

DES - The 16 Rounds

The Key Dependent Calculation

The Key Dependent Calculation

The 16 Rounds of F Consist Of:

The 16 Rounds of F Consist Of:

Enkripsi DES P = KRIPTOGRAFI P = 4 B 524950544 F 4752414649 Hexa K

Enkripsi DES P = KRIPTOGRAFI P = 4 B 524950544 F 4752414649 Hexa K = 4 E 494 B 4 F Hexa P = 4 B 524950544 F 4752 Dalam Biner Menjadi P = 0100 1011 0101 0010 0100 1011 0101 0000 0101 0100 1111 0100 0111 0101 0010

Encoding setiap 64 bit data pada Plaintext dengan IP (Initial Permutation) IP 58 50

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 = 0100 1011 0101 0010 0100 1011 0101 0000 0101 0100 1111 0100 0111 0101 0010 IP = 1

Encoding setiap 64 bit data pada Plaintext dengan IP (Initial Permutation) IP 58 50

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 = 0100 1011 0101 0010 0100 1011 0101 0000 0101 0100 1111 0100 0111 0101 0010 IP = 11 1

Encoding setiap 64 bit data pada Plaintext dengan IP (Initial Permutation) IP 58 50

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 = 0100 1011 0101 0010 0100 1011 0101 0000 0101 0100 1111 0100 0111 0101 0010 IP = 1111 1001 1010 0111 0000 0110 0101 0000 0010 0101 1110 0111

Pecah menjadi L 0 dan R 0. . . !!! Pecah IP menjadi bagian

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 = 1111 1001 1010 0111 0000 0110 0101 0000 0010 0101 1110 0111 L 0 R 0 Jadi L 0 = 1111 1001 1010 0111 0000 0110 0101 R 0 = 0000 0010 0101 1110 0111

Langkah 1 Membangkitkan kunci eksternal K= 4 E 494 B 4 F K dalam

Langkah 1 Membangkitkan kunci eksternal K= 4 E 494 B 4 F K dalam biner: 4 = 0100 E = 1110 Ditulis berkelompok setiap 8 bit menjadi 01001110 Sehingga K menjadi 01001110 01001001011 01001111

Langkah 2 � Gunakan permutasi PC-1 57 49 41 33 25 17 9 1

Langkah 2 � 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= 01001110 01001001011 01001111 K+ = 0

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

Langkah 2 (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= 01001110 01001001011 01001111 K+ = 00

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

Langkah 2 (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= 01001110 01001001011 01001111 K dipermutasi menggunakan tabel PC-1 di atas sehingga 64 bit key menjadi hanya 56 bit key K+ = 0000000 0111111 110000000 1101111 1100110 0111111 1110000

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

Langkah 3 Selanjutnya bagi Key menjadi 2 bagian kanan dan kiri, C 0 dan D 0 yang setiap bagian 28 bit panjangnya Dari K+ = 0000000 0111111 110000000 1101111 1100110 0111111 1110000 C 0 Kita mendapatkan C 0 = 0000000 0111111 110000000 D 0 = 1101111 1100110 0111111 1110000 D 0

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

Langkah 4 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 samping ini Putaran ke Jumlah pergeseran bit 1

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

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

Langkah 5 Dari C 0 dan D 0 awal kita mendapatkan : C 0 = 00001111000000 D 0 = 11011111100111110000 Dari keterangan tabel sebelumnya maka kita geser C 0 dan D 0 ke kiri sebanyak 1 kali (berdasarkan slide di halaman sebelumnya) 00001111000000 C 01 = 000000011110000000 11011111100111110000 D 10 = 10111111001111100001 Dan lakukan seterusnya sampai C 16 dan D 16 C 16 000000111100000000 0011110000000000 1100000000001111111 00000000001111000 0000000011110000000 0000001111000000 00001111000000 11111100000000001111 1 ==000000011110000000 2 3 4 5 8 9 10 11 12 13 14 15 6 7 D 16 0111111001111100001101 1110011111000011011111 011111000011011111100110 11111000011011111100 11111110000110111111001111 111000011011111100111111 1000011011111100111110 011011111100111110000 01100111110000110111111001 1 ==10111111001111100001 2 3 4 5 8 9 10 11 12 13 14 15 6 7

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

Langkah 6 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 = 101000 001001 00001010 0111110 101111

Langkah 6 (Cont’d) Untuk subkey yang lain kita mendapatkan K 2 = 101000 000001

Langkah 6 (Cont’d) Untuk subkey yang lain kita mendapatkan K 2 = 101000 000001 0010010 001011 100111 11111001 K 3 = 001001 000101 001001 010000 101110 110111 100101 110111 K 4 = 000001 100101 010000 111001 111100 101110 110010 K 5 = 000011 100100 000101 010001 110101 010010 111101 011111 K 6 = 000011 110100 001001 111111 111001 001011 011100 K 7 = 000010 110000 000110 001001 010100 011111 101111 K 8 = 000110 010000 10001001 001111 101011 110010 101101 K 9 = 000110 010000 10001000 001110 100111 010011 111111 K 10 = 000100 000010 100010 001100 111011 111111 100110 100011 K 11 = 000100 000010 110000 000100 10100110 1111011 K 12 = 01000010 110000 100100 111111 111001 101101 010110 K 13 = 110000 001010 010000 100100 110101 011100 011111 111010 K 14 = 110000 001000 01100010 010111 011011 111001 001101 K 15 = 111000 001001 00100010 111110 101111 010011 111100 K 16 = 101000 001001 00100010 110110 111111 110010 101111

Enchipering Setiap blok plainteks mengalami 16 kali putaran enciphering. Setiap putaran enciphering merupakan jaringan

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 dari 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 = 0000 0010 0101 1110 0111 menjadi E(R 0) = 1000000 000100 001011 111100 001110

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 101111 E(R 0)E(R ) K 1 0 001110 = = 101000 001001 00001010 0111110 = 001001 100000 001001 00000010 000000 001 0 00 001110 000100 010100 001011 000010 111100 100001 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 Sn(Bn) dengan B 1 = 001000 dan menggunakan

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

Cara Menggunakan S-Box K 1 E(R 0) = 001000 001001 000010 001110 010100 000010

Cara Menggunakan S-Box K 1 E(R 0) = 001000 001001 000010 001110 010100 000010 100001 0 1 2 3 4 0 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10 1 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5 2 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15 3 13 8 10 1 15 4 2 11 6 7 12 0 5 14 9 3 5 6 7 8 B 2 = 001001 Baris = 01 = 1 Maka S 2(B 2) = 1111 Kolom = 0100 = 4 9 10 11 12 13 14 15

Langkah 13 K 1 E(R 0) = 001000 001001 000010 001110 010100 000010 100001

Langkah 13 K 1 E(R 0) = 001000 001001 000010 001110 010100 000010 100001 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) = 0010 1111 0011 1101 0110 0011 1001 0010 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 ) = 1100 0110 0010 1110 0111 0010 1101

Kita mendapatkan L 0 = 1111 1001 1010 0111 0000 0110 0101 f(R 0

Kita mendapatkan L 0 = 1111 1001 1010 0111 0000 0110 0101 f(R 0 , K 1 ) = 0010 0011 0100 1010 1001 1011 Langkah 15 Jadi R 1 = L 0 + f(R 0 , K 1 ) = 1111 1001 1010 0111 0000 0110 0101 + 0010 0011 0100 1010 1001 1011 R 1 = 1101 1100 1101 0000 1101 1001 1110 Dalam putaran selanjutnya kita mendapatkan L 1=R 0 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 36 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 1000 0101 0110 0001 0111 R 16 = 1011 1110 1101 0000 1100 1010 Kita reverse menjadi : R 16 L 16 = 1011 1110 1101 0000 1100 1010 0100 1000 0101 0110 0001 0111 IP-1 = 0011 0010 0011 0000 0111 0101 1011 1101 0110 0100 1011 0110 0001 0101

Langkah 17 Hasil Akhir IP-1 = 0011 0010 0011 0000 0111 0101 1011 1101

Langkah 17 Hasil Akhir IP-1 = 0011 0010 0011 0000 0111 0101 1011 1101 0110 0100 1011 0110 0001 0101 Jika dalam format hexadecimal menjadi 323075 BDD 648 B 615 Jadi enkripsi dari P = KRIPTOGRAFI Dengan K = Adalah C = 323075 BDD 648 B 615

TERIMA KASIH

TERIMA KASIH