Anda di halaman 1dari 19

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.

Skema global dari algoritma DES adalah sebagai berikut (lihat Gambar 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.

Gambar 1. Skema Global Algoritma DES

Di dalam proses enciphering, blok plainteks terbagi menjadi dua bagian, kiri (L)
dan kanan (R), yang masing-masing panjangnya 32 bit. Kedua bagian ini masuk
ke dalam 16 putaran DES.

Pada setiap putaran i, blok R merupakan masukan untuk fungsi transformasi


yang disebut f. Pada fungsi f, blok R dikombinasikan dengan kunci internal Ki.
Keluaran dai fungsi f di-XOR-kan dengan blok L untuk mendapatkan blok R yang
baru. Sedangkan blok L yang baru langsung diambil dari blok R sebelumnya. Ini
adalah satu putaran DES.
Secara matematis, satu putaran DES dinyatakan sebagai

Li = Ri 1
Ri = Li 1 f(Ri 1, Ki)

Gambar 2 memperlihatkan skema algoritma DES yang lebih rinci.

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.
C0: berisi bit-bit dari K pada posisi
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

D0: berisi bit-bit dari K pada posisi


63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22
14,

6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4

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)
Dengan permutasi ini, kunci internal Ki diturunkan dari (Ci, Di) yang dalam hal
ini Ki merupakan penggabungan bit-bit Ci pada posisi:

14, 17, 11, 24, 1, 5, 3, 28, 15,


23, 19, 12,

4, 26, 8, 16,

6, 21, 10

7, 27, 20, 13, 2

dengan bit-bit Di pada posisi:

41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48
44, 49, 39,

56, 34, 53, 46, 42, 50, 36, 29, 32

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)

Cara membaca tabel/matriks di atas: dua entry ujung kiri atas (58 dan 50) berarti:
pindahkan bit ke-58 ke posisi bit 1
pindahkan bit ke-50 ke posisi bit 2, dst

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

Permutasi Ekspansi (E)


E adalah fungsi ekspansi yang memperluas blok Ri

yang panjangnya

32-bit menjadi blok 48 bit. Fungsi ekspansi direalisasikan dengan matriks


permutasi ekspansi sbb:

32

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)


Selanjutnya, hasil ekpansi, yaitu E(Ri 1), yang panjangnya 48 bit di-XORkan dengan Ki yang panjangnya 48 bit menghasilkan vektor A yang
panjangnya 48-bit:

E(Ri 1) Ki = A

Vektor 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.
(cara pensubstitusian dengan kotak-S sudah dijelaskan pada materi
Prinsip-prinsip Perancangan Cipher Blok)
Kedelapan kotak-S tersebut adalah:

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

15

8 14

1 10

6 12

S2:
1

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

7 13 14

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:

13

8 11

10

0 12 11

3 15

6 10

2 12

1 13

5 11 12

7 10 11

3 15 13

0 14

0 15 10

8 16

9 12

0 14

S5:

14 11
4

2 12

7 13

1 11 10 13

11

8 12

12

1 10 15

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:

10 15

7 12

9 14 15

8 12

2 12

5 15 10 11 14

8 13

S7:
4 11
13

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
3

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

Gambar 11. Substitution Box (S-box)

Permutasi (P)
Keluaran proses substitusi adalah vektor B yang panjangnya 48 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:

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)

8 31 10

6 22 11

4 25

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
Plain : 11111111 01101000 00000011 11010101

R0
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

0110

R2

= L1 f(R1, K2)
= 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).

5. Keamanan DES

Isu-isu yang menjadi perdebatan kontroversial menyangkut keamanan DES:


1. Panjang kunci
2. Jumlah putaran
3. Kotak-S
4. Kunci lemah dan kunci setengah lemah

Panjang kunci
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 2 56 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.

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 known-plaintext attack lebih mangkus daripada dengan brute
force attack.

Kotak-S

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

Kunci Lemah dan Kunci Setengah Lemah

DES mempunyai beberapa kunci lemah (weak key). Kunci lemah menyebabkan
kunci-kunci internal pada setiap putaran sama (K1 = K2 = = K16). Akibatnya,
enkripsi dua kali berturut-turut terhadap plainteks menghasilkan kembali plainteks
semula.

Kunci lemah terjadi bila bit-bit di dalam Ci dan Di semuanya 0 atau 1, atau
setengah dari kunci seluruh bitnya 1 dan setengah lagi seluruhnya 0.

Kunci eksternal (dalam notasi HEX) yang menyebabkan terjadinya kunci lemah
adalah (ingat bahwa setiap bit kedelapan adalah bit paritas).
Kunci lemah (dengan bit paritas) Kunci sebenarnya

0101 0101 0101 0101

0000000 0000000

1F1F 1F1F 1F1F 1F1F

0000000 FFFFFFF

E0E0 E0E0 F1F1 F11F

FFFFFFF 0000000

FEFE FEFE FEFE FEFE

FFFFFFF FFFFFFF

Selain kunci lemah, DES juga mempunyai sejumlah pasangan kunci setengahlemah (semiweak key). Pasangan kunci setengah- lemah mengenkripsikan
plainteks menjadi cipherteks yang sama. Sehingga, satu kunci dalam pasangan
itu dapat mendekripsi pesan yang dienkripsi oleh kunci yang lain di dalam
pasangan itu.

Kunci setengah-lemah terjadi bila:


1. Register C dan D berisi bit-bit dengan pola 01010101 atau 10101010
2. Register yang lain (C atau D) berisi bit-bit dengan pola 00000000,
11111111, 01010101, atau 10101010

Ada 6 pasang kunci setengah lemah (dalam notasi HEX):


a. 01FE 01FE 01FE 01FE dan FE01 FE01 FE01 FE01
b. 1FE0 1FE0 0EF1 0EF1 dan E01F E01F F10E F10E
c. 01E0 01E0 01F1 01F1 dan

E001 E001 F101 F101

d. 1FFE 1FFE 0EFE 0EFE dan FE1F FE1F FE0E FE0E


e. 011F 011F 010E 010E dan

1F01 1F01 0E01 0E01

f. E0FE E0FE F1FE F1FE dan FEE0 FEE0 FEF1 FEF1

Anda mungkin juga menyukai