Standar Enkripsi Data: Perbedaan antara revisi

Konten dihapus Konten ditambahkan
S Rifqi (bicara | kontrib)
k perbaikan templat
S Rifqi (bicara | kontrib)
pengembangan artikel; penjelasan sandi
Baris 22:
 
Beberapa dokumen membedakan standar dengan algoritmenya dan menyebut algoritmenya sebagai '''Algoritme Enkripsi Data''' ({{lang-en|Data Encryption Algorithm}}, disingkat DEA).
 
== Penjelasan algoritme ==
{{hatnote|Agar ringkas, penjelasan berikut tidak mencantumkan transformasi dan permutasi secara detail. Untuk penjelasan lebih lanjut, lihat [[Materi DES tambahan]].}}
<imagemap>
Gambar:DES-main-network.png|thumb|250px|'''[[:Gambar:DES-main-network.png|Bagan 1.]]''' Gambaran umum struktur Feistel dalam DES
rect 0 130 639 229 [[Materi DES tambahan#Permutasi awal (IP)|Permutasi awal]]
rect 220 300 421 405 [[#Fungsi Feistel (F)|Fungsi Feistel]]
rect 220 594 421 701 [[#Fungsi Feistel (F)|Fungsi Feistel]]
rect 220 1037 421 1144 [[#Fungsi Feistel (F)|Fungsi Feistel]]
rect 220 1330 421 1437 [[#Fungsi Feistel (F)|Fungsi Feistel]]
rect 0 1478 639 1577 [[Materi DES tambahan#Permutasi akhir (IP-1)|Permutasi akhir]]
circle 50 351 26 [[XOR]]
circle 50 647 26 [[XOR]]
circle 50 1090 26 [[XOR]]
circle 50 1383 26 [[XOR]]
</imagemap>
DES termasuk [[penyandian blok]], yaitu algoritme yang menerima teks asal berukuran tetap dan menghasilkan teks tersandi berukuran sama. Untuk DES, [[ukuran blok]]nya adalah 64 bit. DES juga menerima kunci berukuran 64 bit untuk mengubahsuaikan transformasi. Namun, hanya 56 bit yang dipakai. Delapan bit lainnya dipakai untuk [[bit paritas]]. Jadi, [[ukuran kunci]] efektifnya hanya 56 bit.
 
Seperti penyandian blok lainnya, DES sendiri tidak aman untuk enkripsi, tetapi sebaiknya menggunakan [[Mode operasi penyandian blok|mode operasi]] tertentu. FIPS-81 menyebutkan beberapa mode untuk dipakai dengan DES.<ref>{{cite web |url=http://csrc.nist.gov/publications/fips/fips81/fips81.htm |title=FIPS 81 - Des Modes of Operation |publisher=csrc.nist.gov |access-date=2 Juni 2009}}</ref> Penjelasan lainnya mengenai penggunaan DES dijelaskan dalam FIPS-74.<ref>{{cite web |url=http://www.itl.nist.gov/fipspubs/fip74.htm |title=FIPS 74 - Guidelines for Implementing and Using the NBS Data |publisher=Itl.nist.gov |access-date=2 Juni 2009 |archive-url=https://web.archive.org/web/20140103013152/http://www.itl.nist.gov/fipspubs/fip74.htm |archive-date=3 Januari 2014 |url-status=dead}}</ref>
 
Dekripsi menggunakan struktur yang sama dengan enkripsi, tetapi dengan kunci yang dibalik urutannya. Ini menjadi keuntungan karena perangkat keras/lunak yang sama bisa dipakai dua arah.
 
=== Struktur umum ===
Stuktur umum algoritmenya ditunjukkan pada Bagan 1. Ada enam belas tahapan identik yang disebut ''ronde''. Ada juga [[permutasi]] awal dan akhir (disimbolkan IP dan FP) yang saling [[Fungsi invers|berkebalikan]] (FP membatalkan IP dan sebaliknya). IP dan FP tidak memiliki dampak kriptografis, tetapi dimaksudkan untuk membantu pemuatan blok pada perangkat keras 8 bit pertengahan 1970-an.<ref>{{cite book |last=Schneier |title=Applied Cryptography |edition=1 |page=271}}</ref>
 
Sebelum ronde utama, tiap blok dibagi menjadi dua bagian berukuran 32 bit dan diolah bergantian. Teknik pengolahan bergantian dikenal sebagai [[Sandi Feistel|skema Feistel]]. Struktur Feistel memastikan bahwa enkripsi dan dekripsi adalah proses yang mirip. Perbedaannya hanyalah urutan kunci ronde yang dibalik; sisanya identik. Hal inilah yang menyederhanakan implementasi, khususnya dalam perangkat keras, karena tidak perlu membedakan algoritme untuk enkripsi dan dekripsi.
 
Simbol ⊕ berarti operasi XOR. Fungsi F mengacak setengah blok dengan kunci ronde. Keluarannya digabung dengan setengah satunya dengan XOR. Dua bagian lalu ditukar. Pada ronde terakhir, kedua bagian ditukar. Langkah-langkah itulah yang membuat enkripsi dan dekripsi mirip.
 
=== Fungsi Feistel (F) ===
<imagemap>
Gambar:DES-f-function.png|thumb|250px|'''[[:Gambar:Data_Encription_Standard_Flow_Diagram.svg|Bagan 2.]]''' Fungsi Feistel (F) dalam DES
rect 10 88 322 170 [[Materi DES tambahan#Fungsi ekspansi (E)|Fungsi ekspansi]]
rect 9 340 77 395 [[Materi DES tambahan#Kotak substitusi (Kotak-S)|Kotak substitusi 1]]
rect 89 340 157 395 [[Materi DES tambahan#Kotak substitusi (Kotak-S)|Kotak substitusi 2]]
rect 169 340 237 395 [[Materi DES tambahan#Kotak substitusi (Kotak-S)|Kotak substitusi 3]]
rect 247 340 315 395 [[Materi DES tambahan#Kotak substitusi (Kotak-S)|Kotak substitusi 4]]
rect 327 340 395 395 [[Materi DES tambahan#Kotak substitusi (Kotak-S)|Kotak substitusi 5]]
rect 405 340 473 395 [[Materi DES tambahan#Kotak substitusi (Kotak-S)|Kotak substitusi 6]]
rect 485 340 553 395 [[Materi DES tambahan#Kotak substitusi (Kotak-S)|Kotak substitusi 7]]
rect 565 340 633 395 [[Materi DES tambahan#Kotak substitusi (Kotak-S)|Kotak substitusi 8]]
rect 9 482 630 565 [[Materi DES tambahan#Permutasi (P)|Permutasi (P)]]
circle 319 232 21 [[XOR]]
</imagemap>
Fungsi Feistel (F), yang ditunjukkan oleh Bagan 2, bekerja pada setengah blok (32 bit) dan terdiri dari empat tahap:
# Perluasan (''expansion''): Setengah blok (32 bit) diperluas menjadi 48 bit dengan permutasi perluasan yang disimbolkan E pada bagan dengan menggandakan setengah bitnya.
# Pencampuran kunci (''key mixing''): Hasilnya digabungkan dengan kunci ronde dengan operasi XOR. Enam belas kunci ronde 48 bit—satu untuk tiap ronde—diturunkan dari kunci utama melalui [[penjadwalan kunci]] (dijelaskan di bawah).
# Substitusi: Setelah mencampurkan kunci ronde, tiap blok dibagi menjadi delapan potongan 6 bit sebelum diolah oleh [[kotak-S]] (kotak substitusi). Tiap kotak-S menukar masukan enam bit dengan keluaran empat bit sesuai transformasi nonlinear yang telah disediakan dalam bentuk [[tabel pencarian]]. Kotak-S menjadi inti keamanan DES. Tanpanya, penyandian ini menjadi linear sehingga mudah dipecahkan.
# Permutasi: Keluaran 32 bit dari kotak-S ditata ulang sesuai [[permutasi]] khusus ([[kotak-P]]). Ini didesain agar, setelah permutasi, keluaran dari kotak-S dalam ronde ini disebarluaskan ke kotak-S lain dalam ronde selanjutnya.
 
Pergiliran antara kotak-S dan kotak-P dan perluasan E memberikan [[pengacakan dan penghamburan]] yang diperkenalkan oleh [[Claude Shannon]] pada tahun 1940. Hal itu menjadi syarat penyandian yang aman dan praktis.
 
=== Penjadwalan kunci ===
<imagemap>
Gambar:DES-key-schedule.png|thumb|250px|'''[[:Gambar:DES-key-schedule.png|Bagan 3.]]''' Penjadwalan kunci DES
rect 96 28 298 58 [[Materi DES tambahan#Permutasi pilihan I (PC-1)|Permutasi pilihan I]]
rect 127 122 268 155 [[Materi DES tambahan#Permutasi pilihan II (PC-2)|Permutasi pilihan II]]
rect 127 216 268 249 [[Materi DES tambahan#Permutasi pilihan II (PC-2)|Permutasi pilihan II]]
rect 127 357 268 390 [[Materi DES tambahan#Permutasi pilihan II (PC-2)|Permutasi pilihan II]]
rect 127 451 268 484 [[Materi DES tambahan#Permutasi pilihan II (PC-2)|Permutasi pilihan II]]
rect 96 91 127 116 [[Materi DES tambahan#Rotasi bit|Geser kiri sebanyak 1 bit]]
rect 268 91 299 116 [[Materi DES tambahan#Rotasi bit|Geser kiri sebanyak 1 bit]]
rect 96 185 127 210 [[Materi DES tambahan#Rotasi bit|Geser kiri sebanyak 1 bit]]
rect 268 185 299 210 [[Materi DES tambahan#Rotasi bit|Geser kiri sebanyak 1 bit]]
rect 96 326 127 351 [[Materi DES tambahan#Rotasi bit|Geser kiri sebanyak 2 bit]]
rect 268 326 299 351 [[Materi DES tambahan#Rotasi bit|Geser kiri sebanyak 2 bit]]
rect 96 419 127 444 [[Materi DES tambahan#Rotasi bit|Geser kiri sebanyak 1 bit]]
rect 268 419 299 444 [[Materi DES tambahan#Rotasi bit|Geser kiri sebanyak 1 bit]]
</imagemap>
Bagan 3 menggambarkan tentang penjadwalan kunci untuk enkripsi, yaitu algoritme yang membuat kunci ronde. Awalnya, 56 bit dipilih dari kunci 64 bit oleh PC-1 (''permuted choice 1'')—delapan bit sisanya dipakai sebagai [[bit paritas]] atau dibuang. Kunci 56 bit dibagi menjadi dua bagian berukuran 28 bit. Untuk tiap ronde, tiap bagian digeser melingkar sebanyak satu atau dua bit (tergantung nomor ronde). Lalu, kunci ronde 48 bit dipilih dari bagian kiri dan bagian kanan (masing-masing 24 bit) sesuai PC-2 (''permuted choice 2''). Geseran melingkar (ditunjukkan dengan "<<<" pada bagan) berarti bahwa bit-bit berbeda dipakai untuk tiap kunci ronde. Tiap bit dipakai sekitar 14 dari 16 kunci ronde.
 
Penjadwalan kunci untuk dekripsi juga mirip. Urutan kunci rondenya dibalik. Selain perbedaan tersebut, prosesnya sama untuk enkripsi.
 
== Lihat pula ==
* [[Materi DES tambahan]]
* [[Skipjack (penyandian)]]
* [[Triple DES]]
 
== Referensi ==