Anda di halaman 1dari 30

Data Encryption Standard

(DES)
IF5054 Kriptograf

IF5054/Rinaldi Munir/Prodi IF/STEI ITB

Pendahuluan
Block cipher yang diberikan di dalam
kuliah:
1. DES
2. 3DES
3. GOST
4. RC5
6. AES

IF5054/Rinaldi Munir/Prodi IF/STEI ITB

Block cipher lainnya (tidak diajarkan,


dapat dibaca di dalam referensi, atau
dijadiakn tugas makalah):
1. Blowfsh
9. SAFER
2.
3.
4.
5.
6.
7.
8.

IDEA
LOKI
RC2
FEAL
Lucifer
CAST
CRAB

10.
12.
13.
14.
15.
16.
17.

Twofsh
Serpent
RC6
MARS
Camellia
3-WAY
MMB, SkipJack, dll

IF5054/Rinaldi Munir/Prodi IF/STEI ITB

Stream cipher yang diberikan di dalam


kuliah:
1. RC4
2. A5
Stream cipher lainnya (tidak diajarkan,
dapat dibaca di dalam referensi):
1. A2
2. SEAL
3. WAKE
4. Crypt(1)
5. Cellular Automaton
IF5054/Rinaldi Munir/Prodi IF/STEI ITB

DES (Data Encryption


Standard)

Dikembangkan di IBM pada tahun


1972.
Berdasarkan pada algoritma Lucifer
yang dibuat oleh Horst Feistel.
Disetujui oleh National Bureau of
Standard (NBS) setelah penilaian
kekuatannya oleh National Security
Agency (NSA) Amerika Serikat.
IF5054/Rinaldi Munir/Prodi IF/STEI ITB

Tinjauan Umum
DES adalah standard, sedangkan
algoritmanya adalah DEA (Data
EncryptionAlgorithm). Kedua nama ini
sering dikacaukan.
DES termasuk ke dalam kriptograf kuncisimetri dan tergolong jenis cipher blok.
DES beroperasi pada ukuran blok 64 bit.
Panjang kunci ekternal = 64 bit (sesuai
ukuran blok), tetapi hanya 56 bit yang
dipakai (8 bit paritas tidak digunakan)
IF5054/Rinaldi Munir/Prodi IF/STEI ITB

Setiap blok (plainteks atau


cipherteks) dienkripsi dalam 16
putaran.
Setiap putaran menggunakan kunci
internal berbeda.
Kunci internal (56-bit) dibangkitkan
dari kunci eksternal
Setiap blok mengalami permutasi
awal (IP), 16 putaran enciphering, dan
inversi permutasi awal (IP-1). (lihat
Gambar 9.1)
IF5054/Rinaldi Munir/Prodi IF/STEI ITB

Plainteks
IP

16 kali

Enciphering

IP-1
Cipherteks
Gambar 9.1 Skema Global Algoritma DES

IF5054/Rinaldi Munir/Prodi IF/STEI ITB

P la in te k s

IP

16

L1 = R

R1 L0 f ( R0 , K 1 )

L2 = R

15

= R

R 2 L1 f ( R1 , K 2 )

R15 L14 f ( R14 , K 15 )

14

R16 L15 f ( R15 , K 16 )

16

= R

15

Gambar 9.2 Algoritma Enkripsi dengan DES


IP

-1

C ip h e rte k s

IF5054/Rinaldi Munir/Prodi IF/STEI ITB

Pembangkitan Kunci Internal


Kunci internal = kunci setiap putaran
Ada 16 putaran, jadi ada 16 kunci
internal: K1, K2, , K16
Dibangkitkan dari kunci eksternal (64
bit) yang diberikan oleh pengguna.
Gambar 9.2 memperlihatkan proses
pembangkitan kunci internal.
IF5054/Rinaldi Munir/Prodi IF/STEI ITB

K u n c i e k s te rn a l
Gambar 9.2. Proses pembangkitan kunci-kunci internal DES

P e rm u ta s i
P C -1
C

L e ft S h ift

L e ft S h ift

L e ft S h ift

L e ft S h ift

L e ft S h ift

L e ft S h ift

16

16

P e rm u ta s i
P C -2

P e rm u ta s i
P C -2

P e rm u ta s i
P C -2

16

IF5054/Rinaldi Munir/Prodi IF/STEI ITB

Matriks permutasi kompresi PC-1:


57
10
63
14

49
2
55
6

41
59
47
61

33
51
39
53

25
43
31
45

17
35
23
37

9
27
15
29

1
19
7
21

58
11
62
13

50
3
54
5

42
60
46
28

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

IF5054/Rinaldi Munir/Prodi IF/STEI ITB

34
52
38
20

26
44
30
12

18
36
22
4

Tabel 1. Jumlah pergeseran bit pada setiap putaran


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

Jumlah pergeseran bit


1
1
2
2
2
2
2
2
1
2
2
2
2
2
2
1

IF5054/Rinaldi Munir/Prodi IF/STEI ITB

Matriks PC-2 berikut:


14
23
41
44

17
19
52
49

11
12
31
39

24
4
37
56

1
26
47
34

5
8
55
53

3
16
30
46

28
7
40
42

15
27
51
50

6
20
45
36

21
13
33
29

10
2
48
32

Jadi, Ki merupakan penggabungan bit-bit Ci pada


posisi:
14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10
23, 19, 12, 4, 26, 8, 16, 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

Setiap kunci internal Ki mempunyai panjang 48 bit.


IF5054/Rinaldi Munir/Prodi IF/STEI ITB

Permutasi Awal
Tujuan: mengacak plainteks sehingga
urutan bit-bit di dalamnya berubah.
Matriks permutasi awal (IP):
58
62
57
61

50
54
49
53

42
46
41
45

34
38
33
37

26
30
25
29

18
22
17
21

10
14
9
13

2
6
1
5

60
64
59
63

52
56
51
55

IF5054/Rinaldi Munir/Prodi IF/STEI ITB

44
48
43
47

36
40
35
39

28
32
27
31

20
24
19
23

12
16
11
15

4
8
3
7

Enciphering
Setiap blok plainteks mengalami 16 kali putaran
enciphering .
Setiap putaran enciphering merupakan jaringan
Feistel:
Li = Ri 1

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

i - 1

Ri 1

Ri
IF5054/Rinaldi Munir/Prodi IF/STEI ITB

Diagram komputasi fungsi f :


R

i-1

3 2 b it

E k s p a n s i m e n ja d i 4 8 b it
E (R

i-1

4 8 b it

4 8 b it

4 8 b it
E ( Ri 1 ) K i A

...

M a trik s s u b s titu s i

B
3 2 b it
P (B )
3 2 b it

IF5054/Rinaldi Munir/Prodi IF/STEI ITB

E adalah fungsi ekspansi yang


memperluas blok Ri 1 32-bit menjadi blok
48 bit.
Fungsi ekspansi direalisasikan dengan
matriks permutasi ekspansi:
32
8
16
24

1
9
17
25

2
10
18
26

3
11
19
27

4
12
20
28

5
13
21
29

4
12
20
28

5
13
21
29

6
14
22
30

7
15
23
31

IF5054/Rinaldi Munir/Prodi IF/STEI ITB

8
16
24
32

9
17
25
1

Hasil ekpansi, yaitu E(Ri 1) di-XOR-kan


dengan Ki menghasilkan vektor A 48-bit:
E(Ri 1) Ki = A
Vektor A dikelompokkan menjadi 8
kelompok, masing-masing 6 bit, dan
menjadi masukan bagi proses substitusi.
Ada 8 matriks substitusi, masing-masing
dinyatakan dengan kotak-S.
Kotak S menerima masukan 6 bit dan
memebrikan keluaran 4 bit.

IF5054/Rinaldi Munir/Prodi IF/STEI ITB

S 1:
14
0
4
15

4
15
1
12

13
7
14
8

1
4
8
2

2
14
13
4

15
2
6
9

11
13
2
1

8
1
11
7

3
10
15
5

10
6
12
11

6
12
9
3

12
11
7
14

5
9
3
10

9
5
10
0

0
3
5
6

7
8
0
13

1
13
14
8

8
4
7
10

14
7
11
1

6
15
10
3

11
2
4
15

3
8
13
4

4
14
1
2

9
12
5
11

7
0
8
6

2
1
12
7

13
10
6
12

12
6
9
0

0
9
3
5

5
11
2
14

10
5
15
9

0
7
6
10

9
0
4
13

14
9
9
0

6
3
8
6

3
4
15
9

15
6
3
8

5
10
0
7

1
2
11
4

13
8
1
15

12
5
2
14

7
14
12
3

11
12
5
11

4
11
10
5

2
15
14
2

8
1
7
12

13
8
6
15

14
11
9
0

3
5
0
6

0
6
12
10

6
15
11
1

9
0
7
13

10
3
13
8

1
4
15
9

2
7
1
4

8
2
3
5

5
12
14
11

11
1
5
12

12
10
2
7

4
14
8
2

15
9
4
14

S 2:
15
3
0
13

S3:
10
13
13
1
S4:
7
13
10
3

IF5054/Rinaldi Munir/Prodi IF/STEI ITB

S5:
2
14
4
11

12
11
2
8

4
2
1
12

1
12
11
7

7
4
10
1

10
7
13
14

11
13
7
2

6
1
8
13

8
5
15
6

5
0
9
15

3
15
12
0

15
10
5
9

13
3
6
10

0
9
3
4

14
8
0
5

9
16
14
3

1
15
14
3

10
4
15
2

15
2
5
12

9
7
2
9

2
12
8
5

6
9
12
15

8
5
3
10

0
6
7
11

13
1
0
14

3
13
4
1

4
14
10
7

14
0
1
6

7
11
13
0

5
3
11
8

11
8
6
13

4
13
1
6
S 8:

11
0
4
11

2
11
11
13

14
7
13
8

15
4
12
1

0
9
3
4

8
1
7
10

13
10
14
7

3
14
10
9

12
3
15
5

9
5
6
0

7
12
8
15

5
2
0
14

10
15
5
2

6
8
9
3

1
6
2
12

13
1
7
2

2
15
11
1

8
13
4
14

4
8
1
7

6
10
9
4

15
3
12
10

11
7
14
8

1
4
2
13

10
12
0
15

9
5
6
12

3
6
10
9

14
11
13
0

5
0
15
3

0
14
3
5

12
9
5
6

7
2
8
11

S6:
12
10
9
4
S 7:

IF5054/Rinaldi Munir/Prodi IF/STEI ITB

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 kotakS.
Permutasi dilakukan dengan
menggunakan matriks permutasi P (P16
7
20
21
29
12
28
17
1
15
23
26
5
8
31
2
8box)
24 sbb:
14
32
27
3
9
19
13
30
6
22
11
4

IF5054/Rinaldi Munir/Prodi IF/STEI ITB

10
25

P(B) merupakan keluaran dari fungsi f.


Bit-bit P(B) di-XOR-kan dengan Li 1
menghasilkan Ri:

Ri = Li 1 P(B)
Jadi, keluaran dari putaran ke-i adalah
(Li, Ri) =L (Ri 1 , Li 1 P(B))
i-1

3 2 b it

3 2 b it
IF5054/Rinaldi Munir/Prodi IF/STEI ITB

Inversi Permutasi (IP )


-1

Permutasi terakhir dilakukan setelah 16


kali putaran terhadap gabungan blok
kiri dan blok kanan.
Permutasi menggunakan matriks
permutasi awal balikan (IP-1 ) sbb:
40
38
36
34

8
6
4
2

48
46
44
42

16
14
12
10

56
54
52
50

24
22
20
18

64
62
60
58

32
30
28
26

39
37
35
33

7
5
3
1

47
45
43
41

IF5054/Rinaldi Munir/Prodi IF/STEI ITB

15
13
11
9

55
53
51
49

23
21
19
17

63
61
59
57

31
29
27
25

Dekripsi
Dekripsi terhadap cipherteks merupakan
kebalikan dari proses enkripsi.
DES menggunakan algoritma yang sama
untuk proses enkripsi dan dekripsi.
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)
IF5054/Rinaldi Munir/Prodi IF/STEI ITB

Mode DES
DES dapat dioperasikan dengan
mode ECB, CBC, OFB, dan CFB.
Namun karena kesederhanaannya,
mode ECB lebih sering digunakan
pada paket komersil.

IF5054/Rinaldi Munir/Prodi IF/STEI ITB

Implementasi 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).
IF5054/Rinaldi Munir/Prodi IF/STEI ITB

Keamanan DES
Keamanan DES ditentukan oleh kunci.
Panjang kunci eksternal DES hanya 64 bit, tetapi
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.
Tetapi, dengan panjang kunci 56 bit akan terdapat 2 56
atau 72.057.594.037.927.936 kemungkinan kunci.
Jika serangan exhaustive key search dengan
menggunakan prosesor paralel, maka dalam satu
detik dapat dikerjakan satu juta serangan. Jadi
seluruhnya diperlukan 1142 tahun untuk menemukan
kunci yang benar.
IF5054/Rinaldi Munir/Prodi IF/STEI ITB

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.
IF5054/Rinaldi Munir/Prodi IF/STEI ITB

Pengisian kotak-S DES masih menjadi misteri.


Delapan putaran sudah cukup untuk
membuat cipherteks sebagai fungsi acak dari
setiap bit plainteks dan setiap bit cipherteks.
Dari penelitian, DES dengan jumlah putaran
yang kurang dari 16 ternyata dapat
dipecahkan dengan known-plaintext attack.

IF5054/Rinaldi Munir/Prodi IF/STEI ITB