ALGORITMA KRIPTOGRAFI: DATA ENCRYPTION STANDARD (DES) [Bagian 1] Versi: 11.10.18
Data Encryption Standard (DES) adalah salah satu algoritma kriptografi simetris, artinya kunci yang digunakan untuk proses enkripsi sama dengan kunci yang digunakan untuk proses dekripsi. Algoritma DES ini juga merupakan algoritma enkripsi block-chiper dengan dengan panjang blok 64 bit dan dengan panjang kunci 56 bit yang bersifat rahasia yang dibagi (shared ( shared secret ). ). Shared secret sendiri secret sendiri merupakan sepenggal data yang hanya diketahui oleh pihak-pihak yang melakukan komunikasi, dalam hal ini yaitu pengirim pesan dan penerima pesan. Yang dimaksud sepenggal data di sini sini dapat berupa kata sandi ( password), password), passphrase passphrase,, atau kunci pada algoritma enkripsi. Saat ini DES sudah hampir tidak digunakan lagi karena panjang kunci yang hanya 56 bit itu amat dengan mudah dibongkar dengan serangan Brute Force. Menggunakan prosesor tercepat saat tulisan ini dibuat, DES dapat dibongkar hanya dalam waktu beberapa menit. Algoritma lain yang dianggap sebagai ganti dari algoritma DES ialah algoritma AES (Advanced Encryption Standard).
Sejarah DES Sejarah DES diawali sekitar tahun 1972 di Amerika. Saat itu badan standar Amerika, yakni NBS (National Bureau of Standard), menganggap sudah saatnya ada standar untuk mengenkripsi informasi-informasi sensitif. Setahun kemudian NBS berkonsultasi dengan NSA (National Security Agency) dan sepakat mengeluarkan permintaan kepada siapapun yang mampu untuk membuat algoritma enkripsi yang harus didesain cukup teliti. Cukup banyak yang menanggapi namun di tahun itu tidak ada satu pun yang dianggap NBS memenuhi kriteria. Pada Agustus 1974 NBS mengeluarkan permintaan kedua dan kali ini tanggapan dari IBM dianggap memenuhi kriteria. Algoritma yang diusulkan oleh IBM sebenarnya dikembangkan dari algoritma sebelumnya, yaitu Lucifer karya Horst Feistel. Kemudian ada cukup banyak yang terlibat seperti Walter Tuchman, Don Coppersmith, Alan Konheim, Carl Meyer, Mike Matyas, Roy Adler, Edna Grossman, Bill Notz, Lynn Smith, dan Bryant Tuckerman. Pada perjalanannya selama tahun-tahun pertama DES menerima banyak kritik, namun pada akhirnya di tahun 1976 DES disetujui sebagai standar federal dan resmi dipublikasikan tanggal 15 Januari 1977. Pada tahun 1999 spesifikasi baru yang disebut sebagai standar NIST 46-3 dikeluarkan dan spesifikasi ini menyebutkan penggunaan Triple-DES yang dianggap lebih baik. Algoritma pengganti DES, yakni AES, dipublikasikan pada tahun 2001 dan distandarkan pada tahun 2002. Pada tahun 2005, badan menarik standar FPIS 46-3.
Cara Kerja DES
DES merupakan block-chiper , artinya dalam sekali proses, data dienkrip (atau didekrip) sekaligus dalam beberapa byte, bukan hanya satu byte seperti pada algoritma klasik. Lihat Gambar 1. Ukuran blok DES ialah 64 bit. Ke-64 bit ini ditransformasi dengan cara tertentu sehingga cara yang sama hanya dapat dilakukan untuk mendekrip hasil enkripsi. DES menggunakan kunci 56 bit. Sebenarnya kunci yang dimasukkan juga 64 bit, namun 8 bit digunakan untuk keperluan pengecekan paritas ( parity parity checking). checking). Bit-bit ini berada pada posisi 8, 16, 24, 32, 40, 48, 56, serta 64 dan pada proses enkripsi-dekripsi akan dihilangkan sehingga tersisa hanya 56 bit.
Gambar 1. Proses iterasi dalam DES.
Ada 16 tingkat proses yang disebut ronde (round ( round). ). Ke-16 roundini roundini diapit permutasi awal IP dan permutasi akhir FP yang masing-masing merupakan kebalikan. Artinya, permutasi FP akan membalik permutasi yang dilakukan IP, dan sebaliknya. Sebenarnya penggunaan IP dan FP di sini tidak signifikan terhadap keseluruhan proses. Namun kelihatannya kedua permutasi ini sengaja dihadirkan untuk memfasilitasi perangkat keras tahun 1970-an yang sulit memproses masukan dan keluaran dengan ukuran blok yang panjang. Sebelum diproses oleh seluruh round di atas, blok data input dipecah menjadi 2 bagian, masing-masing 32 bit, dan diproses bergantian (secara menyilang), proses ini dikenal dengan istilah Skema Fiestel. Skema ini memastikan agar enkripsi dan dekripsi merupakan 2 proses yang amat mirip. Perbedaannya ialah bahwa pada proses dekripsi, subkey (di subkey (di sini kunci juga dipecah) digunakan dengan urutan yang terbalik. Selebihnya sama. Dengan demikian, implementasi DES amat sederhana, terutama bila ditanamkan ke dalam perangkat keras. Artinya, tidak dibutuhkan proses enkripsi dan dkripsi dk ripsi yang terpisah. Fungsi F pada Gambar 1 ialah Fungsi Feitsel. Fungsi ini memroses 32 bit data dan terdiri dari 4 tahap. Lihat Gambar 2. Keempat tahap ini ialah:
1. Expansion. 2. Key mixing. 3. Substitusion. 4. Permutation.
Gambar 2. Fungsi Feitsel dalam DES.
DES (Data Encryption Standard) adalah algoritma cipher blok cipher blok yang populer karena dijadikan standard algoritma enkripsi kunci-simetri, meskipun saat ini standard tersebut telah digantikan dengan algoritma yang baru, AES, 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. AlgoritmaDES AlgoritmaDES dikembangkan di IBM dibawah kepemimpinan W.L. Tuchman pada tahun 1972. Algoritma ini didasarkan didasarkan pada algoritma Lucifer yang yang dibuat oleh Horst Feistel. Algoritma ini telah disetujui olehNational oleh National Bureau of Standard (NBS) setelah penilaian kekuatannya oleh National Security Agency (NSA) Amerika Serikat. DES termasuk ke dalam sistem kriptografi simetri dan tergolong jeniscipher jenis cipher blok. 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). upa-kunci(subkey). Kunci internal dibangkitkan dari kunci eksternal (external key) yang panjangnya 64 bit.
Gambar 6.1 Skema global algoritma DES Skema global dari algoritma DES adalah sebagai berikut (lihat Gambar 6.1): 1. Blok plainteks dipermutasi dengan matriks permutasi awal (initial permutation atau IP). IP). 2. Hasil permutasi awal kemudian di-enciphering- sebanyak 16 kaH (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. Di dalam proses enciphering, blok plainteks terbagi menjadi dua bagian, kiri (L) dan kanan R), yang masing-masing panjangnya 32 bit. bi t. Kedua bagian ini masuk ke dalam 16 putaran DES. Pada setiap putaran i, blok R merupakan masukan untuk fungsi transformasi yang ;isebut f. Pada fungsi f, blok R dikombinasikan dengan kunci internal K,. Keluaran dai =angsi f di-XOR-kan dengan blok L untuk mendapatkan blok R yang baru. Sedangkan blok - yang baru langsung diambil dari blok R sebelumnya. Ini adalah satu putaranDES. putaran DES. Secara watematis, satu putaran DES dinyatakan sebagai Li=Ri-1 (6.1) R i=L i-1 f(Ri-1, K ) i (6.2) Gambar 6.3 memperlihatkan skema algoritma DES yang lebih rinci. Satu putaran DES merupakan model jaringan Feistel (lihat Gambar 6.2). Perlu dicatat dari Gambar 6.2 bahwa ika (L,6, R,6 R,6 ) merupakan keluaran dari putaran ke-16, maka (R,6, L,s) merupakan pra:ipherteks (pre-ciphertext) dari enciphering ini. Cipherteks yang sebenarnya diperoleh dengan melakukan permutasi awal balikan, IP-1, terhadap blok pra-cipherteks.
Gambar 6.2. Jaringan Feistel untuk satu putaran DES
Gambar 6.3 Algoritma Enkripsi dengan DES Permutasi Awal Sebelum putaran pertama, 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:
Cara membaca tabel/matriks: dua entry ujung entry ujung kiri atas (58 dan 50) artinya: "pindahkan bit ke-58 ke posisi bit 1" "pindahkan bit ke-50 ke posisi bit 2", dst
Pembangkitan Pembangkitan Kunci Internal Karena ada 16 putaran, maka dibutuhkan kunci internal sebanyak 16 buah, yaitu K,, Kz, ...,K ..., K 16 16. 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.
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:
Dalam permutasi ini, tiap bit kedelapan (parity bit) dari delapan bytekunci bytekunci diabaikan. Hasil 7-ermutasinya adalah sepanjang 56 bit, sehingga dapat dikatakan panjang kunci DES adalah 56 bit. Selanjutnya, 56 bit ini dibagi menjadi 2 bagian, kiri dan k kanan, anan, yang masing-masing nanjangnya 28 bit, yang masingmasing disimpan di dalam Co dan DO: CO: berisi bit-bit dari K pada K pada posisi 57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18 10, 2, 59, 51, 43, 35, 27, 2 7, 19, 11, 3, 60, 52, 44, 36 Do: berisi bit-bit dari K pada K pada posisi 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22 14, 6, 61, 53, 45, 37, 29, 2 9, 21, 13, 5, 28, 20, 12, 4 Selanjutnya, kedua bagian digeser ke kiri (left shift) sepanjang satu atau dua bit bergantung pada tiap putaran.