Standar Enkripsi Data

algoritme penyandian/enkripsi blok
(Dialihkan dari Data Encryption Standard)

Standar Enkripsi Data (Inggris: Data Encryption Standard) adalah algoritme kunci simetris untuk enkripsi data elektronik. Meski ukuran kuncinya pendek, algoritme ini sangat berpengaruh dalam kemajuan kriptografi modern.[3]

Data Encryption Standard
Fungsi Feistel (fungsi F) dalam DES
Informasi umum
PendesainIBM
Pertama kali dipublikasikan1975 (distandarkan pada Januari 1977)
Turunan dariLucifer
PenerusTriple DES, G-DES, DES-X, LOKI89, ICE
Detail penyandian
Ukuran kunci56 bit (+8 bit paritas)
Ukuran blok64 bit
StrukturJaringan Feistel berimbang
Ronde16
Analisis kriptografi publik terbaik
DES telah dianggap tidak aman sejak awal karena mudah dipecahkan oleh serangan brutal.[1] Serangan tersebut telah didemokan secara praktis dan telah tersedia di pasar sebagai layanan. Sejak 2008, serangan analitis terbaik adalah analisis kriptografi linear yang membutuhkan pengetahuan 243 teks asli dan memiliki kompleksitas waktu 239–43.[2]

Algoritme ini memiliki panjang kunci sebanyak 56 bit sehingga kurang aman untuk sebagian besar aplikasi saat ini. Hal ini menjadi bahan kritikan dari awal pembuatannya. Penyandian ini telah digantikan oleh Standar Enkripsi Lanjutan (AES). DES telah ditarik dari standar oleh Badan Nasional Standar dan Teknologi AS.[4]

Beberapa dokumen membedakan standar dengan algoritmenya dan menyebut algoritmenya sebagai Algoritme Enkripsi Data (Inggris: Data Encryption Algorithm, disingkat DEA).[5]

Penjelasan algoritme sunting

 Permutasi awalFungsi FeistelFungsi FeistelFungsi FeistelFungsi FeistelPermutasi akhirXORXORXORXOR
Bagan 1. Gambaran umum struktur Feistel dalam DES

DES termasuk penyandian blok, yaitu algoritme yang menerima teks asal berukuran tetap dan menghasilkan teks tersandi berukuran sama. Untuk DES, ukuran bloknya 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.[6]

Seperti penyandian blok lainnya, DES sendiri tidak aman untuk enkripsi, tetapi sebaiknya menggunakan mode operasi tertentu. FIPS-81 menyebutkan beberapa mode untuk dipakai dengan DES.[7] Penjelasan lainnya mengenai penggunaan DES dijelaskan dalam FIPS-74.[8]

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 sunting

Struktur 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 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.[9]

Sebelum ronde utama, tiap blok dibagi menjadi dua bagian berukuran 32 bit dan diolah bergantian. Teknik pengolahan bergantian dikenal sebagai 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.[10]

Fungsi Feistel (F) sunting

 Fungsi ekspansiKotak substitusi 1Kotak substitusi 2Kotak substitusi 3Kotak substitusi 4Kotak substitusi 5Kotak substitusi 6Kotak substitusi 7Kotak substitusi 8Permutasi (P)XOR
Bagan 2. Fungsi Feistel (F) dalam DES

Fungsi Feistel (F), yang ditunjukkan oleh Bagan 2, bekerja pada setengah blok (32 bit) dan terdiri dari empat tahap:[11]

  1. Perluasan (expansion)
    Setengah blok (32 bit) diperluas menjadi 48 bit dengan permutasi perluasan yang disimbolkan E pada bagan dengan menggandakan setengah bitnya.
  2. 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).
  3. 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.
  4. 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.[12]

Penjadwalan kunci sunting

 Permutasi pilihan IPermutasi pilihan IIPermutasi pilihan IIPermutasi pilihan IIPermutasi pilihan IIGeser kiri sebanyak 1 bitGeser kiri sebanyak 1 bitGeser kiri sebanyak 1 bitGeser kiri sebanyak 1 bitGeser kiri sebanyak 2 bitGeser kiri sebanyak 2 bitGeser kiri sebanyak 1 bitGeser kiri sebanyak 1 bit
Bagan 3. Penjadwalan kunci DES

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.[13] 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).[14] 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.[15]

Lihat pula sunting

Referensi sunting

  1. ^ Diffie, Whitfield; Hellman, Martin E. (Juni 1977). "Exhaustive Cryptanalysis of the NBS Data Encryption Standard" (PDF). Computer. 10 (6): 74–84. doi:10.1109/C-M.1977.217750. Diarsipkan dari versi asli (PDF) tanggal 26 Februari 2014. 
  2. ^ Junod, Pascal (16 Agustus 2001). On the Complexity of Matsui's Attack. Selected Areas in Cryptography. Lecture Notes in Computer Science (dalam bahasa Inggris). 2259. Springer, Berlin, Heidelberg. hlm. 199–211. doi:10.1007/3-540-45537-X_16. ISBN 978-3540455370. 
  3. ^ "The Legacy of DES - Schneier on Security". www.schneier.com. Diakses tanggal 2021-12-07. 
  4. ^ Bátiz-Lazo, Bernardo (2018). Cash and Dash: How ATMs and Computers Changed Banking. Oxford University Press. hlm. 284 & 311. ISBN 9780191085574.
  5. ^ "Algoritma Enkripsi". School of Computer Science. Diakses tanggal 2021-12-07. 
  6. ^ Nurjaman, Asep Rizal (2016-10-21). "MODIFIKASI ALGORITMA DATA ENCRYPTION STANDARD (DES) 64 BIT UNTUK PENGAMANAN PADA PENYIMPANAN FILE" (dalam bahasa Inggris). Universitas Pendidikan Indonesia. 
  7. ^ "FIPS 81 - Des Modes of Operation". csrc.nist.gov. Diakses tanggal 2 Juni 2009. 
  8. ^ "FIPS 74 - Guidelines for Implementing and Using the NBS Data". Itl.nist.gov. Diarsipkan dari versi asli tanggal 3 Januari 2014. Diakses tanggal 2 Juni 2009. 
  9. ^ Schneier. Applied Cryptography (edisi ke-1). hlm. 271. 
  10. ^ "Bitwise XOR (^) - JavaScript | MDN". developer.mozilla.org (dalam bahasa Inggris). Diakses tanggal 2021-12-07. 
  11. ^ Susanto, Alvin. ANALISIS FEISTEL CIPHER SEBAGAI DASAR BERBAGAI ALGORITMA BLOCK CIPHER . Institut Teknologi Bandung. hlm.3.
  12. ^ "Feistel Cipher". GeeksforGeeks (dalam bahasa Inggris). 2020-03-02. Diakses tanggal 2021-12-07. 
  13. ^ "A Detailed Description of DES and 3DES Algorithms (Data Encryption Standard and Triple DES) | CommonLounge". www.commonlounge.com. Diarsipkan dari versi asli tanggal 2021-12-07. Diakses tanggal 2021-12-07. 
  14. ^ "DATA ENCRYPTION ALGORITHM". www.umsl.edu. Diakses tanggal 2021-12-07. 
  15. ^ "What is a software Key Schedule? | Security Encyclopedia". HYPR (dalam bahasa Inggris). Diakses tanggal 2021-12-07. 

Pranala luar sunting