You are on page 1of 17

Data Encryption Standard (DES)

Sejarah DES
Algoritma DES dikembangkan di IBM dibawah kepemimpinan W.L. Tuchman pada tahun 1 !". Algoritma ini dida#arkan pada algoritma L$%I&E' (ang dibuat oleh )or#t &ei#tel. Algoritma ini telah di#etu*ui oleh National Bureau of Standard +,BS- #etelah penilaian kekuatann(a oleh National Security Agency +,SA- Amerika Serikat.

Tinjauan Umum
DES terma#uk ke dalam #i#tem kriptogra.i #imetri dan tergolong *eni# cipher blok. DES beropera#i pada ukuran blok /0 bit. DES mengenkrip#ikan /0 bit plaintek# men*adi /0 bit ciphertek# dengan menggunakan 1/ bit kunci internal +internal key- atau upa2kunci +subkey-. 3unci internal dibangkitkan dari kunci ek#ternal +external key(ang pan*angn(a /0 bit. Skema global dari algoritma DES adalah #ebagai berikut +lihat 4ambar 1-5 1. Blok plaintek# dipermuta#i dengan matrik# permuta#i awal +initial permutation atau I6-. ". )a#il permuta#i awal kemudian di2enciphering2 #eban(ak 1/ kali +1/ putaran-. Setiap putaran menggunakan kunci internal (ang berbeda. 7. )a#il enciphering kemudian dipermuta#i dengan matrik# permuta#i balikan +invers initial permutation atau I621 men*adi blok ciphertek#.

6laintek# I6

1/ kali

Enciphering

I621 %iphertek# Gambar 1. Skema 4lobal Algoritma DES Di dalam pro#e# enciphering8 blok plaintek# terbagi men*adi dua bagian8 kiri +L- dan kanan +R-8 (ang ma#ing2ma#ing pan*angn(a 7" bit. 3edua bagian ini ma#uk ke dalam 1/ putaran DES. 6ada #etiap putaran i8 blok R merupakan ma#ukan untuk .ung#i tran#.orma#i (ang di#ebut f. 6ada .ung#i f8 blok R dikombina#ikan dengan kunci internal Ki. 3eluaran dai .ung#i f di29:'2kan dengan blok L untuk mendapatkan blok R (ang baru. Sedangkan blok L (ang baru lang#ung diambil dari blok R #ebelumn(a. Ini adalah #atu putaran DES. Secara matemati#8 #atu putaran DES din(atakan #ebagai Li ; Ri < 1 Ri ; Li < 1 f+Ri < 18 Ki-

"

4ambar " memperlihatkan #kema algoritma DES (ang lebih rinci.


6laintek#

I6

L
1

; R

R1 = L= f + R = 8 K 1 -

"

L
"

; R

R " = L1 f + R1 8 K " -

11

; R

10

R11 = L10 f + R10 8 K 11 -

1/

R1/ = L11 f + R11 8 K 1/ L ; R

1/

11

I6

21

%iphertek#

Gambar 2. Algoritma Enkrip#i dengan DS %atatlah bahwa #atu putaran DES merupakan model *aringan &ei#tel +lihat 4ambar 7-.
L
i 1

Ri 1

L
i

Ri

Gambar 3. >aringan &ei#tel untuk #atu putaran DES 6erlu dicatat dari 4ambar " bahwa *ika + L1/8 R1/- merupakan keluaran dari putaran ke21/8 maka + R1/8 L1/- merupakan pra2 ciphertek# +pre ciphertext- dari enciphering ini. %iphertek# (ang #ebenarn(a diperoleh dengan melakukan permuta#i awal balikan8 I6218 terhadap blok pra2ciphertek#.

Permutasi Awal
Sebelum putaran pertama8 terhadap blok plaintek# dilakukan permuta#i awal +initial permutation atau I6-. Tu*uan permuta#i awal adalah mengacak plaintek# #ehingga urutan bit2biit di dalamn(a berubah. 6engacakan dilakukan dengan menggunakan matrik# permuta#i awal berikut ini5
1? /" 1! /1 1= 10 0 17 0" 0/ 01 01 70 7? 77 7! "/ 7= "1 " 1? 1= "" 10 1! "1 17 " / 1 1 /= /0 1 /7 1" 1/ 11 11 00 0? 07 0! 7/ 0= 71 7 "? 7" "! 71 "= "0 1 "7 1" 1/ 11 11 0 ? 7 !

%ara membaca tabel@matrik# di ata#5 dua entry u*ung kiri ata# +1? dan 1=- berarti5 Apindahkan bit ke21? ke po#i#i bit 1B Apindahkan bit ke21= ke po#i#i bit "B8 d#t

Pembangkitan

un!i "nternal

3arena ada 1/ putaran8 maka dibutuhkan kunci internal #eban(ak 1/ buah8 (aitu K18 K"8 C8 K1/. 3unci2kunci internal ini dapat dibangkitkan #ebelum pro#e# enkrip#i atau ber#amaan dengan pro#e# enkrip#i. 3unci internal dibangkitkan dari kunci ek#ternal (ang diberikan oleh pengguna. 3unci ek#ternal pan*angn(a /0 bit atau ? karakter. Mi#alkan kunci ek#ternal (ang ter#u#un dari /0 bit adalah K. 3unci ek#ternal ini men*adi ma#ukan untuk permuta#i dengan menggunakan matrik# permuta#i kompre#i 6%21 #ebagai berikut5
1! 0 01 77 1= " 1 11 /7 11 0! 7 10 / /1 17 "1 07 71 01 1! 1 71 "! 1 "7 11 ! 7! " "1 1? 1= 0" 70 "/ 11 7 /= 1" 00 /" 10 0/ 7? 7= 17 1 "? "= 1" 1? 7/ "" 0

Dalam permuta#i ini8 tiap bit kedelapan +parity bit- dari delapan byte kunci diabaikan. )a#il permuta#in(a adalah #epan*ang 1/ bit8 #ehingga dapat dikatakan pan*ang kunci DES adalah 1/ bit. Selan*utn(a8 1/ bit ini dibagi men*adi " bagian8 kiri dan kanan8 (ang ma#ing2ma#ing pan*angn(a "? bit8 (ang ma#ing2ma#ing di#impan di dalam != dan "=5 !=5 beri#i bit2bit dari K pada po#i#i 1!8 0 8 018 778 "18 1!8 8 18 1?8 1=8 0"8 708 "/8 1? 1=8 "8 1 8 118 078 718 "!8 1 8 118 78 /=8 1"8 008 7/

"=5 beri#i bit2bit dari K pada po#i#i /78 118 0!8 7 8 718 "78 118 !8 /"8 108 0/8 7?8 7=8 "" 108 /8 /18 178 018 7!8 " 8 "18 178 18 "?8 "=8 1"8 0 Selan*utn(a8 kedua bagian dige#er ke kiri +left shift- #epan*ang #atu atau dua bit bergantung pada tiap putaran. :pera#i perge#eran ber#i.at #rapping atau round shift. >umlah perge#eran pada #etiap putaran ditun*ukkan pada Tabel 1 #bb5 Tabel 1. >umlah perge#eran bit pada #etiap putaran 6utaran8 i 1 " 7 0 1 / ! ? 1= 11 1" 17 10 11 1/ >umlah perge#eran bit 1 1 " " " " " " 1 " " " " " " 1

Mi#alkan +!i8 "i- men(atakan penggabungan !i dan "i. +!iD18 "iD1- diperoleh dengan mengge#er !i dan "i #atu atau dua bit. Setelah perge#eran bit8 +!i8 "i- mengalami permuta#i kompre#i dengan menggunakan matrik# 6%2" berikut5
10 1! 11 "0 1 1 7 "? 11 / "1 1=
/

"7 1 1" 0 "/ ? 1/ ! "! "= 17 " 01 1" 71 7! 0! 11 7= 0= 11 01 77 0? 00 0 7 1/ 70 17 0/ 0" 1= 7/ " 7"

Dengan permuta#i ini8 kunci internal Ki diturunkan dari +!i8 "i(ang dalam hal ini Ki merupakan penggabungan bit2bit !i pada po#i#i5

108 1!8 118 "08 18 18 78 "?8 118 /8 "18 1= "78 1 8 1"8 08 "/8 ?8 1/8 !8 "!8 "=8 178 "
dengan bit2bit "i pada po#i#i5

018 1"8 718 7!8 0!8 118 7=8 0=8 118 018 778 0? 008 0 8 7 8 1/8 708 178 0/8 0"8 1=8 7/8 " 8 7"
>adi8 #etiap kunci internal Ki mempun(ai pan*ang 0? bit. 6ro#e# pembangkitan kunci2kunci internal ditun*ukkan pada 4ambar 0. Bila *umlah perge#eran bit2bit pada Tabel 1 di*umlahkan #emuan(a8 maka *umlah #eluruhn(a #ama dengan "?8 (ang #ama dengan *umlah bit pada !i dan "i. 3arena itu8 #etelah putaran ke2 1/ akan didapatkan kembali !1/ ; != dan "1/ ; "=.

3unci ek#ternal 6ermuta#i 6%21 ! Le.t Shi.t ! " Le.t Shi.t "

6ermuta#i 6%2"

Le.t Shi.t

Le.t Shi.t

!
$

"
$

6ermuta#i 6%2"

Le.t Shi.t ! Le.t Shi.t "

1/

1/

6ermuta#i 6%2"

1/

Gambar #. 6ro#e# pembangkitan kunci2kunci internal DES

Enciphering
6ro#e# enciphering terhadap blok plaintek# dilakukan #etelah permuta#i awal +lihat 4ambar 1-. Setiap blok plaintek# mengalami 1/ kali putaran enciphering +lihat 4ambar "-. Setiap putaran enciphering merupakan *aringan &ei#tel (ang #ecara matemati# din(atakan #ebagai Li ; Ri < 1 Ri ; Li < 1 f+Ri < 18 KiDiagram komputa#i .ung#i f diperlihatkan pada 4ambar 1.

R 7" bit E +R 0? bit

i 21

Ek#pan#i men*adi 0? bit


i 21

0? bit 0? bit

E + Ri 1 - K i = A

..
B

Matrik# #ub#titu#i

7" bit % +B 7" bit

Gambar $. 'incian komputa#i .ung#i f

E adalah .ung#i ek#pan#i (ang memperlua# blok Ri < 1 (ang pan*angn(a 7"2bit men*adi blok 0? bit. &ung#i ek#pan#i direali#a#ikan dengan matrik# permuta#i ek#pan#i #bb5
7" 1 " 7 0 1 0 1 / ! ? ? 1= 11 1" 17 1" 17 10 11 1/ 1! 1/ 1! 1? 1 "= "1 "= "1 "" "7 "0 "1 "0 "1 "/ "! "? " "? " 7= 71 7" 1

Selan*utn(a8 ha#il ekpan#i8 (aitu E+Ri < 1-8 (ang pan*angn(a 0? bit di29:'2kan dengan Ki (ang pan*angn(a 0? bit mengha#ilkan Eektor A (ang pan*angn(a 0?2bit5 E+Ri < 1- Ki ; A Fektor A dikelompokkan men*adi ? kelompok8 ma#ing2ma#ing / bit8 dan men*adi ma#ukan bagi pro#e# #ub#titu#i. 6ro#e# #ub#titu#i dilakukan dengan menggunakan delapan buah kotak2S +S box-8 S1 #ampai S?. Setiap kotak2S menerima ma#ukan / bit dan mengha#ilkan keluaran 0 bit. 3elompok /2bit pertama menggunakan S18 kelompok /2bit kedua menggunakan S"8 dan #eteru#n(a. +cara pensubstitusian dengan kotak S sudah di$elaskan pada materi &%rinsip prinsip %erancangan %ipher Blok'3edelapan kotak2S ter#ebut adalah5

S15
10 0 17 = 11 ! 0 1 10 11 1" ? 1 " 11 11 ? 7 1= / 1" 1 0 10 " 17 1 1= / 1" 11 1 ? 17 / " 11 11 1" ! 7 1= " 0 1 ! 1 11 7 10 1= = = 7 1 / ! ? = 17

1=

S"5
11 1 ? 10 / 11 7 0 7 17 0 ! 11 " ? 10 1" = 10 ! 11 1= 0 17 1 1 17 ? 1= 1 7 11 0 " 11 ! " 17 1" = 1 1= / ? 1" / / ! 1" = = 1 11 7 " 1 10 1= 1 11

S75
1= = 10 17 ! = 17 / 0 1 1= 17 = / 7 11 1 1 17 1" ! 11 0 " 7 0 / 1= " ? 1 10 1" 11 11 ? 11 7 = 11 1 " 1" 1 1= 10 / ? ! 0 11 10 7 11 1 " ? 1 ! 1"

S05
! 17 10 17 ? 11 1= / 7 11 = 7 = / 1= 1 1 / 11 = 7 0 = 1" 11 ! 17 11 / 1= 1 17 ? " ! 1 0 ? 1 11 1" 0 " 1" 1 1= 10 7 10 1 " ? 1 11 1" ! " 11 0 10

S15
" 1" 0 1 ! 1= 11 / ? 1 7 11 17 10 11 " 1" 0 ! 17 1 1 = 11 1= 7 0 " 1 11 1= 17 ! ? 11 1" 1 / 11 ? 1" ! 1 10 " 17 / 11 = 1= = 10 ? 7 = 0 1 1/ 10 7

S/5
1" 1 1= 11 1= 11 0 " 10 11 1 0 7 " 1" " / ? = 17 7 0 10 ! 1 ! 1" 1 / 1 17 10 = 11 7 " ? 1" 7 ! = 0 1= 1 17 11 1 11 1= 11 10 1 ! / = ? 11 ? / 17

S!5
0 11 " 10 11 17 = 11 ! 0 1 0 11 17 1" / 11 17 ? 1 = ? 17 7 1" 1 1= 10 7 7 ! 10 1= 11 0 1= ! 1 ! 1 1= 1 1" " 11 / ? = 1 = 11 10 " / ? 7 1 / " 1"

S?5
11

17 " ? 1 11 17 ! 11 0 " 1 10

0 / 11 11 1 1= 7 10 1 = 1" ? 1= 7 ! 0 1" 1 / 11 = 10 1 1" 10 " = / 1= 17 11 7 1 ! 0 1= ? 17 11 1" = 7 1 /

! " ? 11

3eluaran pro#e# #ub#titu#i adalah Eektor B (ang pan*angn(a 0? bit. Fektor B men*adi ma#ukan untuk pro#e# permuta#i. Tu*uan permuta#i adalah untuk mengacak ha#il pro#e# #ub#titu#i kotak2S. 6ermuta#i dilakukan dengan menggunakan matrik# permuta#i % +% box- #bb5
1/ " ! "= "1 " 1" "? 1! 1 11 "7 "/ 1 ? 71 ? "0 10 7" "! 7 1 17 7= / "" 11 0 1= "1

Bit2bit %+B- merupakan keluaran dari .ung#i f. Akhirn(a8 bit2bit %+B- di29:'2kan dengan Li < 1 untuk mendapatkan Ri +lihat 4ambar /-5
Ri ; Li < 1 %+B >adi8 keluaran dari putaran ke2i adalah +Li8 Ri- ; +Ri < 1 8 Li < 1 %+B--

L 7" bit

i 21

R 7" bit
i

Gambar %. Skema perolehan Ri

Permutasi Terakhir (Inverse Initial Permutation)


1"

6ermuta#i terakhir dilakukan #etelah 1/ kali putaran terhadap gabungan blok kiri dan blok kanan. 6ro#e# permuta#i menggunakan matrik# permuta#i awal balikan +inverse initial permutation atau I621 - #bb5
0= 7? 7/ 70 ? / 0 " 0? 0/ 00 0" 1/ 10 1" 1= 1/ 10 1" 1= "0 "" "= 1? /0 /" /= 1? 7" 7= "? "/ 7 7! 71 77 ! 1 7 1 0! 11 11 "7 01 17 17 "1 07 11 11 1 01 0 1! /7 /1 1 1! 71 " "! "1

Dekri&si
6ro#e# dekrip#i terhadap ciphertek# merupakan kebalikan dari pro#e# enkrip#i. DES menggunakan algoritma (ang #ama untuk pro#e# enkrip#i dan dekrip#i. >ika pada pro#e# enkrip#i urutan kunci internal (ang digunakan adalah K18 K"8 C8 K1/8 maka pada pro#e# dekrip#i urutan kunci (ang digunakan adalah K1/8 K118 C8 K1 . $ntuk tiap putaran 1/8 118 C8 18 keluaran pada #etiap putaran deciphering adalah Li ; Ri < 1 Ri ; Li < 1 f+Ri < 18 Ki(ang dalam hal ini8 +R1/8 L1/- adalah blok ma#ukan awal untuk deciphering. Blok +R1/8 L1/- diperoleh dengan mempermuta#ikan ciphertek# dengan matrik# permuta#i I621. 6ra2keluaran dari deciphering adalah adalah +L=8 R=-. Dengan permuta#i awal I6 akan didapatkan kembali blok plaintek# #emula.

17

Tin*au kembali pro#e# pembangkitan kunci internal pada 4ambar 0. Selama deciphering8 K1/ diha#ilkan dari +!1/8 "1/- dengan permuta#i 6%2". Tentu #a*a +!1/8 "1/- tidak dapat diperoleh lang#ung pada permulaan deciphering. Tetapi karena +!1/8 "1/- ; +!=8 "=-8 maka K1/ dapat diha#ilkan dari +!=8 "=- tanpa perlu lagi melakukan perge#eran bit. %atatlah bahwa +!=8 "=- (ang merupakan bit2bit dari kunci ek#ternal K (ang diberikan pengguna pada waktu dekrip#i. Selan*utn(a8 K11 diha#ilkan dari +!118 "11- (ang mana +!118 "11diperoleh dengan mengge#er !1/ +(ang #ama dengan !=- dan "1/ +(ang #ama dengan !=- #atu bit ke kanan. Si#an(a8 K10 #ampai K1 diha#ilkan dari +!108 "10- #ampai +!18 "1-. %atatlah bahwa +!i < 18 "i < 1- diperoleh dengan mengge#er !i dan "i dengan cara (ang #ama #eperti pada Tabel 18 tetapi perge#eran kiri +left shiftdiganti men*adi perge#eran kanan +right shift-.

'()e DES
DES dapat diopera#ikan dengan mode E%B8 %B%8 :&B8 dan %&B. ,amun karena ke#ederhanaann(a8 mode E%B lebih #ering digunakan pada paket program komer#il me#kipun #angat rentan terhadap #erangan. Mode %B% lebih komplek# daripada EB% namun memberikan tingkat keamanan (ang lebih bagu# daripada mode EB%. Mode %B% han(a kadang2kadang #a*a digunakan.

"m&lementasi Hardware )an Software DES


DES #udah diimplementa#ikan dalam bentuk perangkat kera#. Dalam bentuk perangkat kera#8 DES diimplementa#ikan di dalam chip. Setiap detik chip ini dapat mengenkrip#ikan 1/8? *uta blok +atau 1 gigabit per detik-.
10

Implementa#i DES ke dalam perangkat lunak dapat melakukan enkrip#i 7".=== blok per detik +pada komputer mainframe IBM 7= =-.

eamanan DES
I#u2i#u (ang men*adi perdebatan kontroEer#ial men(angkut keamanan DES5 1. 6an*ang kunci ". >umlah putaran 7. 3otak2S

%an$ang kunci
6an*ang kunci ek#ternal DES han(a /0 bit atau ? karakter8 itupun (ang dipakai han(a 1/ bit. 6ada rancangan awal8 pan*ang kunci (ang diu#ulkan IBM adalah 1"? bit8 tetapi ata# permintaan ,SA8 pan*ang kunci diperkecil men*adi 1/ bit. Ala#an pengurangan tidak diumumkan. Tetapi8 dengan pan*ang kunci 1/ bit akan terdapat "1/ atau !".=1!.1 0.=7!. "!. 7/ kemungkinan kunci. >ika dia#um#ikan #erangan exhaustive key search dengan menggunakan pro#e#or paralel mencoba #etengah dari *umlah kemungkinan kunci itu8 maka dalam #atu detik dapat diker*akan #atu *uta #erangan. >adi #eluruhn(a diperlukan 110" tahun untuk menemukan kunci (ang benar. Tahun 1 ?8 Electronic (rontier (oundation +E&E- merancang dan membuat perangkat kera# khu#u# untuk menemukan kunci DES #ecara exhaustive search key dengan bia(a G"1=.=== dan diharapkan dapat menemukan kunci #elama 1 hari. Tahun 1 8 kombina#i perangkat kera# E&E dengan kolabora#i internet (ang melibatkan lebih dari 1==.=== komputer dapat menemukan kunci DES kurang dari 1 hari.
11

)umlah putaran Sebenarn(a8 delapan putaran #udah cukup untuk membuat ciphertek# #ebagai .ung#i acak dari #etiap bit plaintek# dan #etiap bit ciphertek#. >adi8 mengapa haru# 1/ kali putaranH Dari penelitian8 DES dengan *umlah putaran (ang kurang dari 1/ tern(ata dapat dipecahkan dengan kno#n plaintext attack lebih mangku# daripada dengan brute force attack. Kotak S 6engi#ian kotak2S DES ma#ih men*adi mi#teri tanpa ada ala#an mengapa memilih kon#tanta2kon#tanta di dalam kotak itu. Kunci Lemah dan Kunci Setengah Lemah DES mempun(ai beberapa kunci lemah +#eak key-. 3unci lemah men(ebabkan kunci2kunci internal pada #etiap putaran #ama +K1 ; K" ; C ; K1/-. Akibatn(a8 enkrip#i dua kali berturut2turut terhadap plaintek# mengha#ilkan kembali plaintek# #emula. 3unci lemah ter*adi bila bit2bit di dalam !i dan "i #emuan(a = atau 18 atau #etengah dari kunci #eluruh bitn(a 1 dan #etengah lagi #eluruhn(a =. 3unci ek#ternal +dalam nota#i )E9- (ang men(ebabkan ter*adin(a kunci lemah adalah +ingat bahwa #etiap bit kedelapan adalah bit parita#-. 3unci lemah +dengan bit parita#0101 0101 0101 0101 1F1F 1F1F 1F1F 1F1F E0E0 E0E0 F1F1 F11F

3unci #ebenarn(a
0000000 0000000 0000000 FFFFFFF FFFFFFF 0000000
1/

FEFE FEFE FEFE FEFE

FFFFFFF FFFFFFF

Selain kunci lemah8 DES *uga mempun(ai #e*umlah pa#angan kunci #etengah2lemah +semi#eak key-. 6a#angan kunci #etengah2 lemah mengenkrip#ikan plaintek# men*adi ciphertek# (ang #ama. Sehingga8 #atu kunci dalam pa#angan itu dapat mendekrip#i pe#an (ang dienkrip#i oleh kunci (ang lain di dalam pa#angan itu. 3unci #etengah2lemah ter*adi bila5 1. Register ! dan " beri#i bit2bit dengan pola =1=1C=1=1 atau 1=1=C1=1= ". 'egi#ter (ang lain +% atau D- beri#i bit2bit dengan pola ====C====8 1111C11118 =1=1C=1=18 atau 1=1=C1=1= a. 01FE b. 1FE0 c. 01E0 d. 1FFE e. 011F .. E0FE Ada / pa#ang kunci #etengah lemah +dalam nota#i )E9-5 01FE 01FE 01FE dan FE01 FE01 FE01 FE01 1FE0 0EF1 0EF1 dan E01F E01F F10E F10E 01E0 01F1 01F1 dan E001 E001 F101 F101 1FFE 0EFE 0EFE dan FE1F FE1F FE0E FE0E 011F 010E 010E dan 1F01 1F01 0E01 0E01 E0FE F1FE F1FE dan FEE0 FEE0 FEF1 FEF1

1!

You might also like