Anda di halaman 1dari 15

TUGAS KRIPTOGRAFI

PENYANDIAN KUNCI SIMETRIS


DES (Data Encryption Standard)

Disusun oleh :
Aditya Wiyanto

( M0508080 )

Ahmad Aniq N M

( M0508082 )

Andreas Dony M S

( M0508084 )

Program Studi Teknik Informatika


Fakultas Matematika dan Ilmu Pengetahuan Alam

UNIVERSITAS SEBELAS MARET


2010

DES ( Data Encryption Standard )

1. Penjelasan Singkat
DES (Data Encryption Standard) adalah algoritma cipher blok yang populer
karena dijadikan standard algoritma enkripsi kunci-simetri, meskipun saat ini
standard tersebut telah digantikan dengan algoritma yang baru, AES, karena DES
sudah dianggap tidak aman lagi. Sebenarnya DES adalah nama standard enkripsi
simetri, nama algoritma enkripsinya sendiri adalah DEA (Data Encryption
Algorithm), namun nama DES lebih populer daripada DEA. 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.

2. Dasar Teori
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.

Gambar 1. Skema Global Algoritma DES

Skema global dari algoritma DES adalah sebagai berikut (lihat Gambar 6.1):
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.
P laint eks

IP

L0

R0

K1

R1 L 0 f ( R 0 , K 1 )

L1 = R0

K2

R 2 L1 f ( R1 , K 2 )

L2 = R1

R15 L14 f ( R14 , K 15 )

L15 = R14

R16 L15 f ( R15 , K 16 )

L16 = R15

IP-1

Ciphert eks

Gambar 2. Algoritma Enkripsi DES

K16

a. Pembangkitan Kunci Internal


Karena ada 16 putaran, maka dibutuhkan kunci internal sebanyak 16
buah, yaitu K1, K 2, ...,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
panjangnya 64 bit atau 8 karakter. Berikut langkah-langkah pembangkitan kunci
internal :

Permutasi Kunci Internal dengan Matriks PC-1


Misalkan kunci eksternal yang tersusun dari 64 bit adalah K. Kunci eksternal
ini menjadi masukan untuk permutasi dengan menggunakan matriks
permutasi kompresi PC- 1 sebagai berikut :

57 49 41 33 25 17
10

2 59 51 43 35 27 19 11

63 55 47 39 31 23 15
14

1 58 50 42 34 26 18
3 60 52 44 36

7 62 54 46 38 30 22

6 61 53 45 37 29 21 13

5 28 20 12

Gambar 3. Matriks PC-1 (Permuted Choice - 1)

Dalam permutasi ini, tiap bit kedelapan (parity bit) dari delapan byte kunci
diabaikan. Hasil permutasinya adalah sepanjang 56 bit, sehingga dapat
dikatakan panjang kunci DES adalah 56 bit. Selanjutnya, 56 bit ini dibagi
menjadi 2 bagian, kiri (C0) dan kanan (D0), yang masing-masing panjangnya
28 bit.

Penggeseran Bit dan Permutasi PC-2 untuk mendapatkan Kunci Internal


Dilakukan pergeseran bit dengan cara kedua bagian (C0 dan D0) digeser ke
kiri (left shift) sepanjang satu atau dua bit bergantung pada tiap putaran.
Operasi pergeseran bersifat wrapping atau round-shift. Jumlah pergeseran
pada setiap putaran ditunjukkan pada Tabel sebagai berikut :
Putaran (i)

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

Jumlah
Pergeseran 1 1 2 2 2 2 2 2 1

Bit
Tabel 1. Jumlah Pergeseran Bit tiap Putaran

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
berikut :

14 17 11 24
23 19 12

4 26

3 28 15

8 16

6 21 10

7 27 20 13

41 52 31 37 47 55 30 40 51 45 33 48
44 49 39 56 34 53 46 42 50 36 29 32
Gambar 4. Matriks PC-2 (Permuted Choice - 2)

Jadi, dengan permutasi matriks PC-2 setiap kunci internal Ki (Ci dan Di)
mempunyai panjang 48 bit dan telah didapat 16 kunci internal.

b. Enkripsi
Berikut ini langkah-langkah yang dilakukan dalam enciphering DES :

Permutasi Awal IP (Initial Permutation)


Sebelum dilakukan penyandian, terhadap blok plainteks dilakukan permutasi
awal (initial permutation atau IP). Tujuan permutasi awal adalah mengacak
plainteks sehingga urutan bit-bit di dalamnya berubah. Pengacakan dilakukan
dengan menggunakan matriks permutasi awal berikut ini :

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
Gambar 5. Matriks IP (Initial Permutation)

Enciphering (Penyandian)
Proses enciphering terhadap blok plainteks dilakukan setelah permutasi awal.
Setiap blok plainteks mengalami 16 kali putaran enciphering (lihat Gambar 2).
Setiap putaran enciphering merupakan jaringan Feistel yang secara
matematis dinyatakan sebagai :

Li = Ri 1
Ri = Li 1 f(Ri 1, Ki)
Diagram komputasi fungsi f diperlihatkan pada Gambar 6 :

Ri-1
32 bit

Ekspansi menjadi 48 bit


E(Ri-1)

48 bit

Ki
48 bit

48 bit

E ( Ri 1 ) K i A

S1

...

S8

Matriks substitusi

B
32 bit
P(B)
32 bit

Gambar 6. Rincian Komputasi Fungsi f


Dari gambar skema tersebut dalam proses enciphering masih dilakukan lagi
langkah dengan Permutasi Ekspansi (E), Substitusi dengan S-Box (S), serta
dilakukan Permutasi (P). Tabel dan penjelasannya dapat dilihat dalam bagian
lampiran.

Permutasi Akhir IP-1 (Inverse Initial Permutation)


Permutasi terakhir dilakukan setelah 16 kali putaran terhadap gabungan blok
kiri dan blok kanan. Proses permutasi menggunakan matriks permutasi awal
balikan (inverse initial permutation atau IP-1 ) sebagai berikut :

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

Gambar 7. Matriks IP-1 (Invers Initial Permutation)

c. Dekripsi
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.
Untuk tiap putaran 16, 15, , 1, keluaran pada setiap putaran deciphering
adalah
Li = Ri 1
Ri = Li 1 f(Ri 1, Ki)
yang dalam hal ini, (R16, L16) adalah blok masukan awal untuk deciphering. Blok
(R16, L16) diperoleh dengan mempermutasikan cipherteks dengan matriks
permutasi IP-1. Pra-keluaran dari deciphering adalah adalah (L0, R0). Dengan
permutasi awal IP akan didapatkan kembali blok plainteks semula.
Tinjau kembali proses pembangkitan kunci internal pada Gambar 4.
Selama deciphering, K16 dihasilkan dari (C16, D16) dengan permutasi PC-2. Tentu
saja (C16, D16) tidak dapat diperoleh langsung pada permulaan deciphering.
Tetapi karena (C16, D16) = (C0, D0), maka K16 dapat dihasilkan dari (C0, D0) tanpa
perlu lagi melakukan pergeseran bit. Catatlah bahwa (C0, D0) yang merupakan
bit-bit dari kunci eksternal K yang diberikan pengguna pada waktu dekripsi.
Selanjutnya, K15 dihasilkan dari (C15, D15) yang mana (C15, D15) diperoleh
dengan menggeser C16 (yang sama dengan C0) dan D16 (yang sama dengan C0)
satu bit ke kanan. Sisanya, K14 sampai K1 dihasilkan dari (C14, D14) sampai (C1,
D1). Catatlah bahwa (Ci 1, Di 1) diperoleh dengan menggeser Ci dan Di dengan
cara yang sama seperti pada Tabel 1, tetapi pergeseran kiri (left shift) diganti
menjadi pergeseran kanan (right shift).

3. Penerapan dan Penyelesaian


Dalam bagian ini akan dilakukan penerapan dari langkah-langkah algoritma DES
di atas dengan Plaintext ENKRIPSI serta kunci eksternal yang digunakan adalah
SURABAYA. Berikut ini adalah langkah-langkah penyelesaiannya :
a. Pendefinisian / Pembangkitan Kunci Internal
Kunci :

ASCII :

83

85

82

65

66

65

89

65

Bit

: 01010011 01010101 01010010 01000001 01000010 01000001 01011001 01000001

Dari konversi 64 bit di atas dilakukan permutasi dengan Matriks PC-1 (Gambar
3), sehingga didapat 56 bit kunci :

Kunci : 0000000 0111111 1100000 0000100 0001010 1000000 1001000 0000111

Setelah itu dilakukan pemisahan C0 dan D0 yang masing-masing memiliki


panjang 28 bit :
C0
Kunci : 0000000 0111111 1100000 0000100

D0
0001010 1000000 1001000 0000111

Selanjutnya dilakukan pergeseran bit kekiri (left-shift) dari C0 dan D0 untuk


membuat 16 sub kunci (kunci internal) dengan menggunakan Tabel 1, Berikut
prosesnya :

C1 = 0000000 1111111 1000000 0001000

D1 = 0010101 0000001 0010000 0001110

C2 = 0000001 1111111 0000000 0010000

D2 = 0101010 0000010 0100000 0011100

C3 = 0000111 1111100 0000000 1000000

D3 = 0101000 0001001 0000000 1110001

C4 = 0011111 1110000 0000010 0000000

D4 = 0100000 0100100 0000011 1000101

C5 = 1111111 1000000 0001000 0000000

D5 = 0000001 0010000 0001110 0010101

C6 = 1111110 0000000 0100000 0000011

D6 = 0000100 1000000 0111000 1010100

C7 = 1111000 0000001 0000000 0001111

D7 = 0010010 0000001 1100010 1010000

C8 = 1100000 0000100 0000000 0111111

D8 = 1001000 0000111 0001010 1000000

C9 = 1000000 0001000 0000000 1111111

D9 = 0010000 0001110 0010101 0000001

C10 = 0000000 0100000 0000011 1111110

D10 = 1000000 0111000 1010100 0000100

C11 = 0000001 0000000 0001111 1111000

D11 = 0000001 1100010 1010000 0010010

C12 = 0000100 0000000 0111111 1100000

D12 = 0000111 0001010 1000000 1001000

C13 = 0010000 0000001 1111111 0000000

D13 = 0011100 0101010 0000010 0100000

C14 = 1000000 0000111 1111100 0000000

D14 = 1110001 0101000 0001001 0000000

C15 = 0000000 0011111 1110000 0000010

D15 = 1000101 0100000 0100100 0000011

C16 = 0000000 0111111 1100000 0000100

D16 = 0001010 1000000 1001000 0000111

Dari masing-masing Cn dan Dn yang telah didapat, digabungkan keduanya dan


dilakukan permutasi Matriks PC-2 sesuai dengan ketentuan Gambar 4 sehingga
terbentuk kunci internal Kn dengan panjang 48 bit, Berikut ini adalah hasilnya :
K1 = 101000 001001 001001 000010 001001 000110 000001 010000
K2 = 101100 000001 001001 010010 110000 100000 100011 000001
K3 = 001001 000101 001001 010000 010000 101000 011000 100001
K4 = 000001 100101 000101 010100 000100 110001 010100 001000
K5 = 000011 100100 000101 010001 010010 000001 000100 100000
K6 = 001011 110100 000100 101001 010000 000110 100000 101100
K7 = 100010 110000 000110 001001 011000 000001 100010 011000
K8 = 000110 010000 101010 001001 100000 010001 010000 111011
K9 = 001110 010000 100010 001000 111010 010100 011100 000000
K10 = 000100 000010 100010 001100 000110 000100 001000 000010
K11 = 000100 000010 110000 010100 110101 000100 000000 000100
K12 = 010001 000010 110000 100100 100000 100000 000010 001011
K13 = 110000 101010 010000 100100 101100 001011 001000 000001
K14 = 110010 001000 011000 100010 001100 100000 011000 100010
K15 = 110010 001000 001000 101010 000111 000010 100100 000010
K16 = 101000 001001 001010 100010 000001 000000 000110 100101
b. Enkripsi
Sebelum

dilakukan

enkripsi

ubah

plainteks

dalam

bentuk

bit,

berikut

pengubahannya :

Plain :

ASCII :

69

78

75

82

73

80

83

73

Bit

: 01000101 01001110 01001011 01010010 01001001 01010000 01010011 01001001

Dari konversi 64 bit di atas dilakukan permutasi dengan Matriks IP (Gambar 5),
sehingga didapat 64 bit kunci :

Plain : 11111111 01101000 00000011 11010101 00000000 00000000 10010110 01001110

Setelah itu dilakukan pemisahan L0 dan R0 yang masing-masing memiliki


panjang 32 bit :
L0

R0

Plain : 11111111 01101000 00000011 11010101

00000000 00000000 10010110 01001110

Iterasi / Putaran 1
Sebelum dilakukan ciphering dilakukan permutasi R0 32 bit dengan matriks
Ekspansi (E) (Lihat di halaman Lampiran) dan menghasilkan R0 48 bit, berikut
hasilnya :

E(R0) = 000000 000000 000000 000001 010010 101100 001001 011100


Langkah selanjutnya dilakukan operasi XOR antara E(R0) dan K1, serta selanjutnya

dilakukan substitusi S-Box dan Permutasi (P) untuk menghasilkan feistel (f) (Lihat
di halaman Lampiran), berikut langkah operasinya :

N=1
K1

= 101000 001001 001001 000010 001001 000110 000001 010000

E(R0) = 000000 000000 000000 000001 010010 101100 001001 011100


101000 001001 001001 000011 011011 101010 001000 001100

S1

S2

S3

S4

S5

S6

S7

S8

S(B) = 1101

1111

0011

1000

1001

1000

0100

0001

0101

1001

1000

1100

1000

0101

0110

R1

= L0 f(R0, K1)

0111

= 1111 1111 0110 1000 0000 0011 1101 0101


0111 0101 1001 1000 1100 1000 0101 0110

= 1000 1010 1111 0000 1100 1011 1000 0011

Iterasi / Putaran 2
Setelah itu dilakukan ciphering iterasi berikutnya dengan K2 yang sebelumnya
dilakukan permutasi R1 32 bit dengan matriks Ekspansi (E) (Lihat di halaman
Lampiran) dan menghasilkan R1 48 bit, berikut hasilnya :
E(R1) = 110001 010101 011110 100001 011001 010111 110000 000111
Langkah selanjutnya dilakukan operasi XOR antara E(R1) dan K2, serta selanjutnya

dilakukan substitusi S-Box dan Permutasi (P) untuk menghasilkan feistel (f) (Lihat
di halaman Lampiran), berikut langkah operasinya :

N=2
L2 = R1 = 1000 1010 1111 0000 1100 1011 1000 0011
K2

= 101100 000001 001001 010010 110000 100000 100011 000001

E(R1) = 110001 010101 011110 100001 011001 010111 110000 000111


011101 010100 010111 110011 101001 110111 010011 000110

S1

S2

S3

S4

S5

S6

S7

S8

S(B) = 0011

0010

1110

0100

0001

0111

0011

1000

1010

0010

0001

0011

0111

0000

1110

R2

= L1 f(R1, K2)

0110

= 1000 1010 1111 0000 1100 1011 1000 0011


0110 1010 0010 0001 0011 0111 0000 1110

= 1110 0000 1101 0001 1111 1100 1000 1101


Skip Iterasi & Hasil
Ciphering tersebut dilakukan terus menerus hingga mencapai 16 iterasi,
kemudian L16 dan R16 digabungkan dan dilakukan permutasi akhir Matriks IP-1
(Invers Initial Permutation), berikut hasil penggabungannya :

Cipher = 0000 1110 0010 0000 0011 1001 0110 1111 1111 0000 1100 0101 0010 1001 0110 0111
Berikut ini adalah hasil permutasi cipherteks dengan Matriks IP-1 (Gambar 7)
beserta konversi bit cipher ke dalam ASCII dan simbol :

Bit

: 00101111 01000011 01100011 01001101 10000100 10011111 10100011 10100000

ASCII :

47

67

99

77

132

159

163

160

Cipher:

Maka hasil enkripsi plainteks ENKRIPSI dengan kunci eksternal SURABAYA


melalui algoritma DES (Data Encryption Standard) adalah /CcM.
4. Implementasi Hardware dan Software DES

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

LAMPIRAN
Data Encryption Diagram (DES)

Permutasi Ekspansi (E)

32
8

9 10 11 12 13 12 13 14 15 16 17

16 17 18 19 20 21 20 21 22 23 24 25
24 25 26 27 28 29 28 29 30 31 32

Gambar 10. Matriks E (Ekspansi)

Substitution Box (E)

S1:
14

4 13

0 15
4

2 15 11

3 10

6 12 11

3 10

4 14

2 13

1 14

8 13

2 11 15 12

5 11

3 14 10

6 13

6 11

2 13 12

5 10

8 14 12

1 10

9 11

7 12

5 14

15 12

1 10

6 12

S2:
15

8 14

3 13

0 14

7 11 10

13

8 10

7 15

4 13

3 15

2 11

8 12
6

2 15
9

S3:
10

9 14

3 15

13

13

8 15

1 10 13

6 15

6 10

1 13 12

7 11

5 14 12 11 15

0 11

2 12

5 10 14

4 15 14

3 11

2 12

9 10

5 11 12

4 15

2 12

1 10 14

7 13 15

3 14

2 14

S4:
7 13 14
13

8 11

10

0 12 11

3 15

6 10

1 13

5 11 12

7 10 11

3 15 13

0 14

0 15 10

8 16

9 12

0 14

S5:
2 12
14 11
4
11

2 12

7 13

1 11 10 13

8 12

8 15

1 14

2 13

6 15

9 10

0 13

4 14

5 11

1 13 14

0 11

4 10

1 13 11

S6:
12

1 10 15

10 15

7 12

9 14 15

8 12

2 12

5 15 10 11 14

8 13

S7:
4 11
13
1

2 14 15

8 13

1 10 14

4 11 13 12

7 14 10 15

0 11

6 11 13

4 10

6 15 11

3 12

5 10

5 12

2 15

3 12

0 15 14

1 10

3 14

0 12

4 12

6 11

0 14

6 10 13 15

S8:
13

1 15 13

8 10

7 11

9 12 14

1 14

4 10

8 13 15 12

6 11

8 31 10

Gambar 11. Substitution Box (S-box)

Permutasi (P)

16
2

7 20 21 29 12 28 17
8 24 14 32 27

1 15 23 26

9 19 13 30

Gambar 12. Matriks P (P-box)

6 22 11

4 25