Apa itu enkripsi 3DES dan bagaimana cara kerja DES?

Apa itu enkripsi 3DES dan bagaimana cara kerja DES (1)


3DES adalah sandi enkripsi yang diturunkan dari Data Encryption Standard (DES) asli. Itu menjadi menonjol di akhir tahun sembilan puluhan, tetapi sejak itu tidak disukai karena munculnya algoritma yang lebih aman.

Meskipun akan dihentikan pada tahun 2023, masih diterapkan dalam beberapa situasi. Karena didasarkan pada salah satu algoritme yang pertama kali diterbitkan dan dipelajari, DES, penting untuk mempelajari apa itu 3DES dan bagaimana cara kerjanya.

Panduan ini akan membawa Anda melalui setiap langkah proses DES secara terperinci, lalu membahas bagaimana DES dimodifikasi dalam 3DES agar lebih aman. Ini juga menyentuh berbagai masalah keamanan dan apakah Anda harus menggunakan algoritma atau tidak.

Apa itu 3DES?

Meskipun secara resmi dikenal sebagai Algoritma Enkripsi Data Tiga (3DEA), itu paling sering disebut sebagai 3DES. Ini karena algoritma 3DES menggunakan cipher Data Encryption Standard (DES) tiga kali untuk mengenkripsi data.

DES adalah algoritma kunci-simetris yang didasarkan pada jaringan Feistel. Sebagai cipher kunci simetris, ia menggunakan kunci yang sama untuk proses enkripsi dan dekripsi. Jaringan Feistel membuat kedua proses ini hampir persis sama, yang menghasilkan algoritma yang lebih efisien untuk diimplementasikan.

DES memiliki baik blok 64-bit dan ukuran kunci, tetapi dalam praktiknya, kuncinya hanya memberikan keamanan 56-bit. 3DES dikembangkan sebagai alternatif yang lebih aman karena panjang kunci DES yang kecil. Dalam 3DES, algoritma DES dijalankan melalui tiga kali dengan tiga tombol, namun itu hanya dianggap aman jika tiga tombol terpisah digunakan.

Penggunaan 3DES

Setelah kelemahan DES normal menjadi lebih jelas, 3DES diadopsi dalam berbagai aplikasi. Itu adalah salah satu skema enkripsi yang lebih umum digunakan sebelum munculnya AES.

Beberapa contoh implementasinya termasuk Microsoft Office, Firefox dan sistem pembayaran EMV. Banyak dari platform ini tidak lagi menggunakan 3DES karena ada alternatif yang lebih baik.

Institut Nasional Standar dan Teknologi (NIST) telah mengeluarkan rancangan proposal yang mengatakan bahwa semua bentuk 3DES akan ditinggalkan hingga 2023 dan tidak diizinkan mulai 2024 dan seterusnya. Meskipun ini hanya konsep, proposal ini menandakan akhir dari suatu era, dan sudah melewati waktu untuk beralih ke algoritma lain yang lebih aman.

Sejarah enkripsi 3DES

Karena 3DES berasal dari DES, yang terbaik adalah memperkenalkan standar sebelumnya terlebih dahulu. Pada tahun tujuh puluhan, National Bureau of Standards (NBS - sejak saat itu dinamai NIST) sedang mencari algoritma yang dapat digunakan sebagai standar untuk mengenkripsi informasi pemerintah yang sensitif namun tidak rahasia..

NBS menerima proposal untuk standar yang sesuai dengan persyaratannya, tetapi tidak ada kandidat dari babak asli yang sesuai. Itu mengundang lebih banyak pengajuan, dan kali ini IBM mengirim melalui algoritma yang dikembangkan timnya. Pengajuan tersebut berasal dari sandi Lucifer yang dirancang oleh Horst Feistel.

Pada tahun 1975, algoritma IBM diterbitkan oleh NBS sebagai Standar Enkripsi Data yang diusulkan. Publik diundang untuk mengomentari desain, yang menarik beberapa kritik.

Kriptografer terkenal seperti Whitfield Diffie dan Martin Hellman, desainer pertukaran kunci Diffie-Hellman, mengklaim bahwa panjang kunci terlalu pendek dan bahwa S-box telah diubah dari desain awal mereka..

Pada saat itu, banyak di komunitas kriptografi berpikir bahwa NSA telah menyabotase proyek dan melemahkan algoritme, sehingga itu akan menjadi satu-satunya lembaga yang dapat memecahkan DES..

Ketika ini diselidiki oleh Komite Pemilihan Senat Amerika Serikat tentang Intelijen, ditemukan bahwa "NSA meyakinkan IBM bahwa ukuran kunci yang dikurangi sudah cukup; secara tidak langsung membantu dalam pengembangan struktur S-box; dan menyatakan bahwa algoritme DES terakhir, sejauh pengetahuan mereka, bebas dari kelemahan statistik atau matematika. ”

Laporan yang sama melanjutkan dengan mengatakan bahwa "NSA tidak merusak desain dengan cara apa pun." Ini telah didukung oleh beberapa mantan staf IBM yang mengklaim bahwa algoritma DES dirancang sepenuhnya oleh tim IBM.

Dokumentasi yang dideklasifikasi NSA sendiri mengklaim bahwa agensi “bekerja sama dengan IBM untuk memperkuat algoritma terhadap semua kecuali serangan brute-force dan untuk memperkuat tabel substitusi…”

Kecurigaan gangguan NSA mereda di tahun sembilan puluhan setelah pembacaan sandi diferensial ditemukan secara publik. Ketika S-box yang banyak difitnah diuji dengan teknik baru, mereka ditemukan lebih tahan terhadap serangan daripada jika mereka dipilih secara acak..

Ini menunjukkan bahwa tim IBM telah mengetahui tentang pembacaan sandi diferensial pada tahun tujuh puluhan, dengan Steven Levy mengklaim bahwa NSA meminta mereka untuk menjaga rahasia teknik untuk melindungi keamanan nasional..

Ahli kriptografi terkenal Bruce Schneier pernah menyindir, "Butuh komunitas akademik dua dekade untuk mengetahui bahwa NSA 'tweak' benar-benar meningkatkan keamanan DES."

Terlepas dari pertanyaan awal tentang keamanan algoritme dan keterlibatan NSA, algoritme IBM kemudian disetujui sebagai Standar Enkripsi Data pada tahun 1976. Ini diterbitkan pada tahun 1977 dan ditegaskan kembali sebagai standar pada tahun 1983, 1988 dan 1993.

Ketika cryptanalysis linier pertama kali diterbitkan pada tahun 1994, ia mulai menimbulkan pertanyaan tentang keamanan algoritma. Pada tahun 1997, NIST mengumumkan bahwa sedang mencari algoritma untuk menggantikan DES. Kebutuhan akan algoritma baru semakin diintensifkan ketika teknologi berkembang lebih lanjut dan potensi serangan semakin kuat.

Berbagai upaya cracking menunjukkan bahwa algoritma tersebut tidak terlalu sulit untuk diatasi daripada yang diperkirakan sebelumnya. Pada tahun 1998, distributed.net mampu memecahkan DES adalah 39 hari.

Pada awal tahun 1999, Deep Crack dari Electronic Frontier Foundation mendapatkan waktu lebih dari 22 jam. Ini menandakan akhir dari DES, karena serangan seperti ini sekarang berada dalam jangkauan musuh yang memiliki sumber daya yang baik.

Masalah utama adalah ruang kunci kecil, dan algoritma baru sangat dibutuhkan. Ini adalah masalah, karena akan membutuhkan beberapa tahun lagi bagi NIST untuk menentukan algoritma yang menjadi standar pengganti, Advanced Encryption Standard (AES).

Sementara sandi untuk AES sedang diputuskan, 3DES diusulkan sebagai tindakan sementara. Ini melibatkan menjalankan algoritma DES tiga kali, dengan tiga tombol terpisah. Pada tahun 1999, DES ditegaskan kembali, tetapi dengan 3DES sebagai algoritma yang ideal. DES normal hanya diizinkan dalam aplikasi lawas.

3DES kemudian menjadi algoritma enkripsi yang tersebar luas, meskipun penggunaan sumber daya yang besar dan keterbatasan keamanan telah membuatnya diganti oleh AES di sebagian besar kasus penggunaan..

Memahami algoritma DES

Sebelum kita dapat berbicara tentang detail 3DES, penting untuk memahami algoritma DES dari mana ia berasal. Jadi mari kita mulai dari awal.

Kami menggunakan enkripsi untuk mengubah data plaintext kami menjadi ciphertext, yaitu informasi yang tidak dapat diakses oleh penyerang (selama kami menggunakan algoritma yang sesuai).

Algoritma enkripsi pada dasarnya adalah rumus matematika yang kompleks. Ketika mengenkripsi sesuatu seperti "Ayo pergi ke pantai", banyak orang menjadi bingung. Lagi pula, bagaimana Anda bisa menerapkan matematika untuk hal-hal seperti huruf dan karakter?

Pengkodean teks

Kenyataannya adalah bahwa komputer tidak berurusan dengan huruf dan karakter. Sebaliknya, mereka bekerja pada sistem 1s dan 0s yang dikenal sebagai biner. Setiap 1 atau 0 dikenal sebagai bit, dan koleksi delapan di antaranya dikenal sebagai byte.

Anda dapat mencarinya secara manual, atau menggunakan konverter online untuk melihat bahwa dalam biner, "Ayo pergi ke pantai" menjadi:

01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111 00100000 01110100 01101111 00100000 01110100 01101000 01100101 00100000 01100010 0110010 0110010 01100001 01100011 01101000

Blok

Saat data dienkripsi, data itu dibagi menjadi beberapa blok terpisah untuk diproses. DES memiliki ukuran blok 64-bit, yang pada dasarnya berarti bahwa setiap blok cocok dengan campuran 64 yang dan nol. Blok pertama kami (64 digit pertama dari biner yang ditunjukkan di atas) adalah:

01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111

Yang kedua adalah:

00100000 01110100 01101111 00100000 01110100 01101000 01100101 00100000

Dan blok terakhir kita adalah:

01100010 01100101 01100001 01100011 01101000

Lapisan

Anda mungkin telah memperhatikan bahwa blok ketiga kami hanya 40 bit. Sebelum dapat dienkripsi, perlu dibangun hingga ukuran blok 64-bit. Ini dilakukan dengan lapisan, yang melibatkan penambahan informasi tambahan ke blok untuk melengkapinya. Ini dapat dilakukan dengan sejumlah skema berbeda, dan itu juga dapat berfungsi untuk membuat informasi terenkripsi lebih sulit untuk dipecahkan, tetapi kami tidak akan membahasnya dalam artikel ini.

Jadwal kunci DES

Algoritma enkripsi menggunakan kunci untuk menambahkan data yang akan mengubah hasil akhir dari proses. Jika DES hanya melibatkan langkah-langkah seperti permutasi dan S-box (permutasi dijelaskan di bawah ini, sementara S-box tercakup dalam Pengganti bagian), semua yang harus dilakukan penyerang adalah mengungkap rincian algoritma, kemudian melakukan masing-masing langkah secara terbalik untuk mengungkapkan pesan awal.

Karena sebagian besar algoritme kami dikenal luas, ini tidak akan menambah banyak keamanan. Sebagai gantinya, kunci rahasia ditambahkan untuk mengubah output dengan cara yang tidak dapat diprediksi hanya dengan mengetahui algoritme (selama algoritma yang cukup kompleks digunakan).

DES dimulai dengan satu tombol, yang digunakan untuk membuat sub kunci yang diterapkan di setiap putaran. Ini adalah kunci 64-bit, yang ukurannya sama dengan blok kami. Katakanlah kunci kami adalah:

01001010 10101101 11101000 10100101 01110001 01010100 10101001 11111010

Sekarang, kunci ini dalam biner, yang merupakan cara data diekspresikan saat komputer memprosesnya. Ketika manusia berurusan dengan kunci, mereka biasanya akan muncul sebagai campuran karakter, kira-kira seperti ini:

kj329nf982bc9wn1

Di DES, langkah pertama untuk menurunkan kunci bundar kami adalah dengan meng-permutasi kunci (menggerakkannya) sesuai dengan tabel berikut:

3des-2a

Dalam permutasi, setiap bit kunci asli kami dikocok ke posisi baru seperti yang ditunjukkan oleh tabel. Karena sel di sudut kiri atas (C) mengatakan 57, angka pertama dari kunci yang kami permutasi akan menjadi angka di posisi ke-57 dari blok lama kami:

01001010 10101101 11101000 10100101 01110001 01010100 10101001 11111010

Sel kedua berkata 49, yang berarti bahwa digit kedua dari kunci baru kami akan menjadi angka yang ada di posisi ke-49 dari blok lama kami:

01001010 10101101 11101000 10100101 01110001 01010100 10101001 1111010

Sel ketiga berkata 41, jadi kami mencari digit di posisi ke-41:

01001010 10101101 11101000 10100101 01110001 01010100 10101001 1111010

Sejauh ini, kunci kami terdiri dari "110”.

Sisa kunci diatur dengan cara yang sama, sesuai dengan nilai-nilai tabel. Kami bergerak dari kiri ke kanan, dan begitu kami sampai di akhir baris, kami melompat ke yang berikutnya, seperti biasa. Sekali tabel C selesai, kita lompat ke tabel D untuk menyelesaikan bagian kedua kunci.

Tidak ada cara mudah untuk memindahkan seluruh blok kami sesuai dengan tabel permutasi awal. Anda dapat melakukan semuanya secara manual, atau menulis skrip untuk itu (atau bahkan beruntung dan menemukannya di internet), tetapi kami akan menipu dan memperbaikinya:

1100010 1010010 1010101 0101010 1010000 1111001 0001011 1000111

Anda mungkin khawatir bahwa kami mengarang beberapa angka dalam panduan ini, tetapi kenyataannya tidak penting. Tidak ada lagi yang mengenkripsi data secara manual, semuanya dilakukan melalui program. Aspek paling penting dari tutorial ini adalah Anda mendapatkan gagasan yang jelas tentang konsep-konsep yang sedang kami tangani. Angka-angka itu sendiri hanya berfungsi untuk membantu Anda memvisualisasikan apa yang sedang terjadi.

Beberapa pembaca mungkin telah memperhatikan bahwa tabel (dan sekarang kunci kita), hanya memiliki 56 bit daripada 64. Ini karena setiap bit kedelapan dilewati. Ini adalah artefak dari teknologi masa lalu, ketika penting untuk memiliki bit parity check, yang memverifikasi apakah kunci telah diterima dengan benar. Bit pemeriksaan paritas ini berarti bahwa dalam praktiknya, DES hanya memiliki keamanan kunci 56-bit.

Tabel C dan D memberi kita kunci yang memiliki dua bagian 28-bit. Kadang-kadang, setengahnya disebut sebagai C dan D, tetapi di seluruh artikel ini kita akan menyebutnya sebagai L dan R, untuk kiri dan kanan. Sisi kiri kami adalah:

1100010 1010010 1010101 0101010

Sedangkan hak kami adalah:

1010000 1111001 0001011 1000111

Langkah selanjutnya adalah menggeser kunci dengan satu atau dua spasi ke kiri, tergantung pada putaran. Jumlah pasti ruang yang ditentukan berdasarkan tabel yang telah ditentukan berikut ini:

Angka bulat Jumlah shift kiri
1 1
2 1
3 2
4 2
5 2
6 2
7 2
8 2
9 1
10 2
11 2
12 2
13 2
14 2
15 2
16 1

Jadi mari kita ambil bagian kiri dan kanan kita:

L 1010010 1010010 1010101 0101010

R 1010000 1111001 0001011 1000111

Dan menggeser keduanya satu posisi ke kiri, karena babak pertama bergeser 1 sesuai dengan tabel (nomor di ujung kiri dipindahkan ke ujung kanan).

Subkunci putaran pertama:

L 0100101 0100101 0101010 1010101

R 0100001 1110010 0010111 0001111

Di babak kedua, tabel juga mengatakan 1, jadi hasil ini lagi akan diubah dengan menggerakkan setiap posisi nomor satu ke kiri.

Babak kedua subkunci:

L 1001010 1001010 1010101 0101010

R 1000011 1100100 0101110 0011110

Di babak ketiga, angkanya akan dipindahkan dua tempat ke kiri, karena tabel sekarang mengatakan 2.

Subkunci putaran ketiga:

L 0101010 0101010 1010101 0101010

R 0001111 0010001 0111000 1111010

Dalam putaran berikutnya, angkanya dipindahkan ke kiri sesuai dengan jarak yang ditentukan dalam tabel, dengan masing-masing shift diterapkan pada hasil putaran sebelumnya. Pada akhirnya, ini memberi kita enam belas subkunci yang berbeda, satu untuk setiap putaran proses DES.

Langkah selanjutnya adalah permutasi lain sesuai dengan tabel PC2 yang ditunjukkan di bawah ini:

des-3a

Sekarang, Anda harus terbiasa dengan permutasi, jadi kami tidak akan membahas prosesnya secara mendalam. Jika Anda ingin melihat cara kerjanya lebih detail, lihat penjelasan di dekat awal bagian ini. Meskipun posisi relokasi berbeda, prosesnya sama.

Masing-masing dari 16 kunci yang diturunkan dalam proses pemindahan sekarang dikocok sesuai tabel, dengan nomor dari posisi ke-14 dipindahkan ke tempat pertama, ke-17 ke yang kedua, ke-11 ke ke-3, dll...

Jika Anda memperhatikan tabel dengan seksama, Anda akan melihat bahwa hanya ada 48 bit, bukan 56 bit yang sebelumnya kami miliki. Proses ini dikenal sebagai permutasi kompresi.

Anda juga dapat melihat bahwa bagian atas tabel menampilkan angka antara satu dan 28, sedangkan bagian bawahnya berisi angka dari 29 hingga 56. Ini membuat bagian kiri dan kanan subkunci kami terpisah, dan ini ditunjukkan di bawah ini oleh ruang yang lebih besar di tengah tombol.

Sekali lagi, kami akan menipu dan membuat angka-angkanya. Katakanlah bahwa seluruh proses ini memberi kami subkunci berikut:

Ronde satu:         010101 010101 101010 110100 101001 100101 101010 101010

Babak kedua:         011010 110101 101110 110010 010100 110010 111101 101101

Babak ketiga:     010100 100110 110110 101010 100110 011000 101011 011001

Babak keempat:         011001 110101 011001 110101 000011 001011 010101 010101

Babak lima:         110101 001101 010101 010101 010011 001011 010111 100101

Ronde enam:           010111 110101 011001 111001 101001 100101 101010 101010

Ronde tujuh:     110101 111010 101110 101010 100110 010110 111011 001110

Babak delapan:       011001 110101 010101 001001 010011 001011 010100 101010

Ronde sembilan:         111011 011010 011110 100010 100010 010110 110011 110010

Babak 10:             011010 010101 101110 101001 010010 010110 111000 101010

Babak 11:             110101 001101 101110 101010 100101 100101 101010 001010

Babak 12:             101001 100100 101001 101010 100110 011000 101011 011001

Babak 13:             010010 010010 010101 010101 010110 110001 100101 101010

Babak 14:             101001 100110 010101 011101 010001 001010 110010 111110

Babak 15:             011001 011010 011001 110101 001001 011001 100101 101101

Babak 16:             010010 100110 010101 010101 010001 101000 110010 111010    

Proses pergeseran ini menghasilkan setiap bit dari kunci awal yang digunakan di sekitar 14 dari 16 subkunci, meskipun beberapa bit digunakan sedikit lebih banyak daripada yang lain.

Permutasi awal

Setelah data dibagi menjadi beberapa blok dan diisi jika perlu, sekarang saatnya untuk memulai proses enkripsi DES. Kami akan kembali ke subkunci yang baru saja kami buat pada tahap selanjutnya. Langkah pertama dikenal sebagai permutasi awal, di mana data disusun ulang sesuai dengan tabel berikut:

3des-12

Proses permutasi awal ini tidak membuat algoritma lebih aman. Ini karena itu tidak melibatkan input kunci apa pun, dan dapat dengan mudah dibalik. Algoritma ini awalnya dirancang dengan cara ini karena membuat implementasi lebih mudah dalam konteks tertentu.

Karena kami telah membahas permutasi beberapa kali, kami akan melewatkan penjelasan besar apa pun di sini. Kembali ke Jadwal kunci DES bagian jika Anda memerlukan informasi lebih lanjut tentang cara kerjanya.

Mari kita ambil blok pertama dari pesan "Ayo pergi ke pantai", yang kami peroleh di Blok bagian di bawah Memahami algoritma DES:

01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111

Karena kata sel pertama 58, kami akan memilih nomor dari posisi ke-58:

01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111

Kemudian kita akan mengambil nomor dari posisi ke-50:

01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111

Dan angka dari posisi ke-42:

01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111

Ini memberi kita “110" sejauh ini. Kami akan membuat sisa nomor:

11010111 01001010 10101000 10011101 01001011 10110101 10000111 10101001

Ketika permutasi awal selesai, data dipindahkan ke langkah berikutnya.

Memisahkan blok

Setelah data telah mengalami permutasi awal, itu dibagi menjadi dua bagian. Kami mengambil blok kami yang baru saja menjalani permutasi awal:

11010111 01001010 10101000 10011101 01001011 10110101 10000111 10101001

Dan kami akan memisahkannya menjadi dua blok, satu blok kiri (terdiri dari 32 digit pertama), yang dikenal sebagai L.0:

L.0    11010111 01001010 10101000 10011101

Dan blok kanan (terdiri dari 32 digit kedua), dikenal sebagai R0:

R0    01001011 10110101 10000111 10101001

Fungsi F

Sekarang setelah blok telah terpecah, saatnya fungsi F berlangsung. Di babak pertama, itu hanya akan diterapkan ke bagian kanan blok, sementara bagian kiri tetap disisihkan hingga nanti. Sisi kanan mengalami empat langkah berikut sebagai bagian dari fungsi F:

  • Permutasi ekspansi (E dalam diagram)
  • Pencampuran kunci (⊕ dalam diagram)
  • Substitusi (masing-masing S1, S2 dll dalam diagram)
  • Permutasi (P dalam diagram)

des-5

Permutasi ekspansi

Permutasi ekspansi mencapai tiga hal. Yang paling penting adalah memungkinkan bit input data tunggal untuk mempengaruhi output dari dua bit lainnya, menyebabkan efek longsoran salju. Itu juga membuat setengah 48-bit yang tepat, sehingga itu adalah ukuran yang sama dengan subkunci untuk langkah selanjutnya. Efek lain dari permutasi ekspansi adalah membuat output lebih panjang dari input. Ini memungkinkannya untuk dikompres dalam operasi substitusi.

Bit disusun ulang sesuai dengan tabel berikut. Beberapa bit individual ada di tabel dua kali, yang merupakan cara blok diperluas dari 32 menjadi 48 bit:

des - 6a

Karena sel pertama mengatakan 32, kami mengambil blok kanan dan memilih nomor dari posisi ke-32, seperti yang kami lakukan pada contoh permutasi lainnya yang tercantum di atas:

R0    01001011 10110101 10000111 10101001

Kami kemudian mengambil angka-angka dari posisi pertama, posisi kedua dan seterusnya, sampai kita sampai ke sudut kanan bawah blok. Karena ada a 1 di sel ini, digit terakhir juga akan menjadi angka yang muncul di posisi pertama blok kita.

Katakanlah bahwa permutasi ekspansi memberi kami blok 48-bit baru:

101110 100110 100100 000000 001100 001110 101101 011110

Pencampuran kunci

Setelah blok diperluas menjadi 48 bit, saatnya menerapkan subkey putaran pertama, yang kami peroleh di Jadwal kunci DES bagian di atas. Blokir dimodifikasi oleh subkunci menggunakan cipher XOR.

Cipher XOR adalah cipher tambahan yang mengikuti proses sederhana, terutama jika dibandingkan dengan elemen lain yang telah kita bahas.

Dalam sandi XOR:

0 + 0 = 0

1 + 0 = 1

1 + 1 = 0

Jadi katakanlah Anda harus XOR dua angka berikut dalam biner:

1101

0101

Setiap digit akan ditambahkan ke angka di bawahnya. Menurut tiga aturan yang ditunjukkan di atas, ini memberikan hasil:

1000

Untuk menyelesaikan langkah pencampuran kunci, kami mengambil sisi kanan blok kami yang baru saja kami kembangkan menjadi 48 bit, dan kunci putaran pertama. Kami kemudian melakukan penambahan XOR:

Blok:                      101110 100110 100100 000000 001100 001110 101101 011110

Kunci satu bulat:     010101 010101 101010 110100 101001 100101 101010 101010

Hasil XOR:             111011 110011 001110 110100 100101 101011 000111 110100

Hasil operasi XOR kemudian diteruskan ke babak berikutnya.

Pengganti

Pergantian menambah kebingungan pada data. Biasanya dilakukan dengan tabel pencarian, yang juga dikenal sebagai kotak substitusi atau kotak-S. DES menggunakan delapan tabel atau S-box yang terpisah, yang berbeda untuk masing-masing 6 bit data. Tabel berikut menunjukkan delapan S-box DES:

des - 7

Delapan S-box yang terpisah digunakan untuk menerjemahkan setiap input 6-bit menjadi output 4-bit. Langkah pertama dalam proses ini adalah untuk mengambil digit di awal dan akhir segmen 6-bit, lalu konversikan nilai biner itu menjadi desimal.

Mari kita ambil data yang baru saja kita selesaikan XORing pada langkah sebelumnya:

111011 110011 001110 110100 100101 101011 000111 110100

Kami akan melihat segmen 6-bit pertama yang menunjukkan kepada Anda bagaimana proses substitusi bekerja:

111011

Karena angka pertama dan angka terakhir sama-sama 1, ini memberi kita nilai 11. Kami kemudian mengonversi 11 dari biner ke desimal, yang memberi kita 3. Ini hanyalah nilai yang setara, ditulis dengan cara yang berbeda. Anggap saja sebagai konversi bahasa komputer ke bahasa manusia. Anda dapat memeriksa sendiri konversi dengan kalkulator daring jika diinginkan.

Kami kemudian mengambil empat digit tengah segmen 6-bit pertama:

111011

Dan mengubahnya dari biner menjadi desimal. 1101 diterjemahkan ke nomor 13.

Sekarang, kami mengambil dua angka ini dan mencarinya di S1 meja:

                des - 7a

Nomor pertama kami, 3, memberitahu kita untuk melihat di baris ketiga, sedangkan nomor kedua kita, 13 memberitahu kita untuk melihat di kolom ke-13. Nilai di baris ketiga kolom 13 adalah 0.

Sekarang kita telah mencari nomor kita di tabel, kita mengubahnya kembali menjadi empat digit biner. Nol biasanya ditulis sebagai 0 dalam biner, tetapi 0000 sama, dan ini adalah format yang paling cocok untuk keperluan kita.

Setelah proses ini, S-box mengubah bagian 6-bit data pertama kami (111011) menjadi nilai 4-bit yang berbeda (0000). Tampaknya berbelit-belit, tetapi teknik ini membantu untuk lebih mengaburkan hubungan antara ciphertext dan plaintext yang dikaitkan dengan.

Bagian 6-bit selanjutnya dari data kemudian melewati proses yang sama, tetapi sebaliknya menggunakan kotak S2 yang ditunjukkan di atas. Bagian ketiga menggunakan tabel S3 dan seterusnya, hingga bagian terakhir mengalami penggantian melalui tabel S8.

Sekali lagi, kami akan menipu untuk sisa nilai. Katakanlah bahwa kotak substitusi memberi kami hasil dari:

0000 1010 1100 1001 0100 1001 0111 0001

Setelah setiap bagian dari data melewati S-box-nya, ia bergerak ke langkah berikutnya.

Permutasi

Tahap terakhir dari fungsi F adalah permutasi lain, menggunakan tabel berikut:des - 8a

Sekarang, Anda harus memiliki pemahaman yang layak tentang bagaimana permutasi menggeser digit dari blok lama ke posisi berbeda di blok baru, jadi kami tidak akan membahasnya lagi.

Katakanlah permutasi ini mengambil hasil kami sebelumnya:

0000 1010 1100 1001 0100 1001 0111 0001

Dan memberi kami hasil:

0101 0110 1001 0101 0010 0100 0101 0010

Sekarang permutasi telah selesai, kita telah selesai dengan empat langkah fungsi F di babak ini. Dalam notasi matematika, nilai ini dikenal sebagai f (R0, K1). Ini berarti bahwa hasilnya adalah fungsi (f) dari sisi kanan awal blok (R0) dan subkunci putaran pertama (K1).

XOR dengan blok kiri

Ingat bagaimana kita membagi blok menjadi dua tepat sebelum kita memulai langkah-langkah fungsi F? Kami menyisihkan sisi kiri blok (L0), sementara sisi kanan menjalani masing-masing proses ini. Nah, sekarang saatnya bagi L0 untuk kembali beraksi.

Kami mengambil sisi kanan yang baru saja kami proses f (R0, K1) dan tambahkan ke sisi kiri lama (L.0) menggunakan cipher XOR. Ini memberi kita R1, hasil babak pertama kami:

f (R0, K1):                         0101 0110 1001 0101 0010 0100 0101 0010

L.0:                                    1101 0111 0100 1010 1010 1000 1001 1101

Hasil XOR (R1):              1000 0001 1101 1111 1000 1100 1100 1111

Mengacu kepada Pencampuran kunci bagian di atas jika Anda memerlukan pengingat tentang cara kerja cipher XOR.

15 putaran lagi ...

Jika Anda sudah sejauh ini, maka DES mungkin tampak seperti proses yang sulit. Tapi itu bahkan belum hampir selesai. Data berjalan melalui empat langkah fungsi F, diikuti oleh XOR, 15 kali lagi, dengan total 16 putaran.

Di babak kedua, kami mengambil versi asli, yang belum tersentuh di sisi kanan blok (R0) dan menjadikannya sisi kiri baru (L1). Sementara itu, kami mengambil hasil putaran pertama kami dan mengirimkannya melalui fungsi F. Semuanya terjadi sama seperti terakhir kali, namun kali ini subkunci untuk putaran kedua digunakan sebagai gantinya. Katakanlah bahwa proses ini memberi kita hasil dari:

f (R1, K2):        1011 0111 1000 1011 1001 1101 1001 1110

Kami kemudian XOR hasilnya dengan L1, yang sebenarnya R0 (kami menurunkan ini di Blok pemisah bagian). Ini memberi kita hasil dari putaran kedua, R2:

f (R1, K2):           1011 0111 1000 1011 1001 1101 1001 1110

L.1:                      0100 1011 1011 0101 1000 0111 1010 1001

R2:                     1111 1100 0011 1110 0001 1010 0011 0111

Langkah ini mungkin tampak sedikit membingungkan, tetapi di bawah skema Feistel, sisi kanan yang lama menjadi kiri baru, sedangkan hasil operasi menjadi sisi kanan baru.

Diagram berikut memberi Anda representasi visual tentang apa yang terjadi. IP mewakili permutasi awal, F adalah stand-in untuk seluruh fungsi F, ⊕ melambangkan fungsi XOR dan panah menunjukkan setiap sisi blok bergerak antara kiri dan kanan:

des-9

Formula tepat untuk setiap langkah adalah:

L.n = Rn-1

Rn = L.n-1 + f(Rn-1,Kn)

Dimana:

L = Setengah bagian kiri dari blok (dimulai dengan L0 ketika blok awalnya dibagi)

R = Setengah bagian kanan blok (dimulai dengan R0 ketika blok awalnya dibagi)

n = Angka bulat (dimulai dengan 0, ketika blok awalnya dibagi)

f = Fungsi F

Kn = Subkunci untuk putaran n

Menurut rumus dan diagram, pada putaran ketiga, R1 menjadi setengah kiri baru (L2), sedangkan R2 diproses melalui fungsi F. Katakanlah itu memberi kita hasil dari:

f (R2, K3)        1001 0111 0000 1011 1101 0111 1011 1011

Kami kemudian menghitung hasil putaran ketiga kami (R3), menggunakan cipher XOR, seperti sebelumnya:

f (R2, K3):           1011 0111 1000 1011 1001 1101 1001 1110

L.2:                      0100 1011 1011 0101 1000 0111 1010 1001

R3:                      1111 1100 0011 1110 0001 1010 0011 0111

Proses yang sama berlanjut hingga ronde kelima belas, dengan blok-blok beralih dan subkunci berikutnya digunakan di setiap ronde. Di babak 16 dan final, blok tidak diganti. Sebaliknya, mereka digabungkan untuk membentuk blok 64-bit. Menahan diri dari menukar blok pada tahap terakhir ini memungkinkan algoritma yang akan digunakan untuk enkripsi dan dekripsi.

Katakanlah bahwa babak final memberi kita hasil dari:

1010 0101 0100 1011 1001 0001 0100 1000 0101 1010 1101 0001 1101 1001 1001 1101

Permutasi akhir

Permutasi ini adalah kebalikan dari permutasi awal, dan sekali lagi, permutasi tersebut tidak menambah nilai keamanan tambahan. Ini mengatur ulang data sesuai dengan tabel berikut:

des-10a

Tabel permutasi ini berfungsi sama dengan yang sebelumnya. Karena ini adalah langkah terakhir dari proses enkripsi, hasilnya akan menjadi ciphertext untuk blok pertama "Ayo pergi ke pantai". Katakanlah bahwa blok terenkripsi adalah:

0100 1001 0011 0010 1001 0101 0111 0100 1011 1010 0111 0101 0111 1010 0101 0101

Sekarang, jika Anda menginginkan teks sandi asli untuk “Ayo pergi ke pantai”, Anda bisa melewatkan seluruh proses pembelajaran dan langsung menuju ke alat enkripsi DES online. Jika kita memasukkan kalimat di samping kunci (misalkan kj329nf982bc9wn1) alat memberi kita teks terenkripsi:

U2FsdGVkX19Pienyu3w3q4zCd2IPKEPUWBzu3AeyVu2H3FeimZe6hA

Jika mau, Anda dapat mengonversi kunci dan ciphertext menjadi biner dan kemudian membandingkan caranya ciphertext blok pertama sejalan dengan seluruh proses yang telah diuraikan.

Dekripsi DES

Di DES, proses dekripsi sangat mudah. Struktur algoritma Feistel memungkinkan untuk dengan mudah dibalik. Proses ini dijalankan hampir persis sama dengan mendekripsi informasi. Satu-satunya perbedaan adalah bahwa subkunci diterapkan secara terbalik. Ini adalah pengaturan yang efisien, karena itu berarti perangkat lunak dan perangkat keras yang sama dapat digunakan dalam proses enkripsi dan dekripsi.

Untuk mendekripsi data, pertama-tama melewati permutasi awal, kemudian blok dibagi dan setengah kanan melewati fungsi F. Perbedaannya adalah bahwa pada putaran pertama dekripsi, subkunci ke-16 diterapkan. Segala sesuatu yang lain berjalan seperti biasa. Setelah fungsi F selesai, itu XORed dengan sisi kiri blok.

Blok diaktifkan dan hasilnya melewati proses yang sama untuk putaran kedua, dengan satu-satunya pengecualian bahwa subkey ke-15 diterapkan. Proses ini berlanjut hingga ronde ke-16, ketika subkey pertama digunakan.

Sama seperti dalam proses enkripsi, blok tidak bertukar pada tahap akhir, dan kemudian data mengalami permutasi akhir. Ini menyelesaikan proses dekripsi, menghasilkan plaintext asli dari pesan tersebut.

3DES

Ketika kelemahan keamanan DES menjadi lebih jelas, 3DES diusulkan sebagai cara untuk memperluas ukuran kuncinya tanpa harus membangun algoritma yang sama sekali baru. Daripada menggunakan satu tombol seperti pada DES, 3DES menjalankan algoritma DES tiga kali, dengan tiga kunci 56-bit:

  • Kunci satu digunakan untuk mengenkripsi plaintext.
  • Kunci dua digunakan untuk mendekripsi teks yang telah dienkripsi dengan kunci.
  • Kunci tiga digunakan untuk mengenkripsi teks yang didekripsi dengan tombol tiga.

Di setiap tahap, proses DES lengkap diikuti seperti diuraikan di atas.

Sekarang, Anda mungkin bertanya-tanya, "Bagaimana menerapkan dekripsi pada langkah kedua meningkatkan keamanan?"

Jawabannya adalah menggunakan kunci yang terpisah. Jika kunci pertama juga digunakan untuk mendekripsi data pada langkah kedua, maka data akan segera kembali ke tempat itu dimulai.

Namun, karena menggunakan kunci yang berbeda, proses dekripsi tidak benar-benar berfungsi untuk mendekripsi data. Ini mungkin tampak secara logis menyimpang, tetapi mendekripsi dengan kunci terpisah hanya berfungsi untuk mengacaukan data lebih jauh.

Setelah kunci kedua "mendekripsi" data, kunci ketiga diterapkan untuk mengenkripsi lagi. Hasilnya adalah ciphertext 3DES.

3DES disusun dengan cara ini karena memungkinkan implementasi agar kompatibel dengan DES satu tombol, dua DES kunci dan tiga DES kunci (ini dicakup dalam bagian berikut). Ini tidak akan berfungsi jika enkripsi digunakan dalam ketiga langkah.

Opsi penguncian 3DES

Secara teknis, 3DES dapat diimplementasikan dengan tiga konfigurasi tombol yang berbeda. Meskipun demikian, opsi kedua dan ketiga tidak aman dan tidak boleh diterapkan.

  • Opsi penguncian satu - Opsi ini menggunakan tiga kunci independen dan merupakan yang paling aman.
  • Opsi penguncian dua - Dalam konfigurasi ini, tombol pertama dan ketiga sama.
  • Opsi penguncian tiga - Ini menggunakan tiga kunci identik. Ketika kunci identik digunakan, proses dekripsi pada tahap kedua membatalkan enkripsi pertama, hanya menyisakan enkripsi akhir untuk mengubah data. Ini membuat hasilnya menjadi sama seperti DES biasa.

Proses 3DES: Opsi kunci satu

Jujur saja, keseluruhan proses 3DES dapat membuat kepala Anda berputar, terutama jika Anda baru mengenal kriptografi. Untuk membantunya masuk, berikut ringkasan singkat dari seluruh skema enkripsi algoritma 3DES:

Plaintext memasuki algoritma 3DES dan yang pertama dienkripsi dengan kunci dalam langkah-langkah berikut:

    • Jadwal utama - 16 subkunci diturunkan dari yang utama

    • Permutasi awal

    • Blok ini dibagi menjadi dua bagian kiri dan kanan

      • Setengah kanan dikirim melalui fungsi F

        • Permutasi ekspansi

        • XOR dengan subkunci untuk putaran

        • Pengganti

        • Permutasi

      • XOR hasil dari fungsi F dengan sisi kiri

      • Jadikan sisi kanan lama sisi kiri baru, dan hasilnya sisi kanan baru

        Ulangi langkah di atas 14 kali

      • Setengah kanan dikirim melalui fungsi F

        • Permutasi ekspansi

        • XOR dengan subkunci untuk ronde ke-16

        • Pengganti

        • Permutasi

      • XOR hasil dari fungsi F dengan sisi kiri

      • Gabungkan sisi kiri dan kanan balok bersamaan

    • Permutasi akhir

Ambil teks yang telah dienkripsi dengan kunci, lalu kirim melalui Proses "dekripsi" dengan kunci dua:

    • Jadwal kunci - 16 subkunci berasal dari kunci dua

    • Permutasi awal

    • Blok ini dibagi menjadi dua bagian kiri dan kanan

      • Setengah kanan dikirim melalui fungsi F

        • Permutasi ekspansi

        • XOR dengan subkunci untuk putaran (dimulai dari subkunci ke-16 untuk dekripsi)

        • Pengganti

        • Permutasi

      • XOR hasil dari fungsi F dengan sisi kiri

      • Jadikan sisi kanan lama sisi kiri baru, dan hasilnya sisi kanan baru

        Ulangi langkah di atas 14 kali

      • Setengah kanan dikirim melalui fungsi F

        • Permutasi ekspansi

        • XOR dengan subkunci untuk putaran pertama

        • Pengganti

        • Permutasi

      • XOR hasil dari fungsi F dengan sisi kiri

      • Gabungkan sisi kiri dan kanan balok bersamaan
    • Permutasi akhir

Ambil data yang telah "didekripsi" dengan kunci dua, lalu kirim melalui idproses cryption dengan kunci tiga:

    • Jadwal kunci - 16 subkunci berasal dari kunci tiga

    • Permutasi awal

    • Blok ini dibagi menjadi dua bagian kiri dan kanan

      • Setengah kanan dikirim melalui fungsi F

        • Permutasi ekspansi

        • XOR dengan subkunci untuk putaran

        • Pengganti

        • Permutasi

      • XOR hasil dari fungsi F dengan sisi kiri

      • Jadikan sisi kanan lama sisi kiri baru, dan hasilnya sisi kanan baru

        Ulangi langkah di atas 14 kali

      • Setengah kanan dikirim melalui fungsi F

        • Permutasi ekspansi

        • XOR dengan subkunci untuk ronde ke-16

        • Pengganti

        • Permutasi

      • XOR hasil dari fungsi F dengan sisi kiri

      • Gabungkan sisi kiri dan kanan balok bersamaan

    • Permutasi akhir

Hasilnya adalah ciphertext 3DES.

Keamanan 3DES

Keamanan 3DES tergantung pada opsi kunci mana yang digunakan. Opsi kunci satu melibatkan tiga kunci 56-bit yang berbeda, yang memberikan panjang kunci total 168 bit. Panjang efektif dikurangi secara signifikan oleh serangan meet-in-the-middle, yang membawa keamanan dunia nyata turun menjadi 112 bit.

Serangan meet-in-the-middle berguna terhadap skema enkripsi yang mengulangi algoritma yang sama beberapa kali. Teknik menyimpan nilai langsung dari setiap tahap enkripsi, kemudian menggunakan informasi ini untuk secara radikal meningkatkan waktu yang diperlukan untuk memaksa algoritma.

Opsi dua dan tiga memiliki kunci yang jauh lebih kecil dan rentan terhadap serangan plaintext yang diketahui, dan dipilih-plainteks, serta yang lain.

Serangan plaintext yang dikenal mungkin terjadi ketika musuh memiliki akses ke plaintext dan ciphertext pesan. Jika suatu algoritma rentan terhadap serangan ini, penyerang dapat menggunakan informasi ini untuk menyimpulkan kunci, yang memungkinkan mereka untuk memecahkan semua data lain yang telah dienkripsi dengan kunci yang sama.

Serangan plaintext yang dipilih serupa, tetapi itu melibatkan penyerang membuka kunci dengan membandingkan ciphertext dengan plaintext sewenang-wenang.

Karena kerentanan ini dan keseluruhan ukuran kunci kecil yang terlibat, opsi kunci dua dan tiga tidak aman dan tidak boleh diimplementasikan.

Apakah 3DES aman?

Karena 3DES akan ditinggalkan dalam beberapa tahun ke depan, yang terbaik adalah menggunakan algoritma lain. Sementara opsi kunci satu masih dianggap aman untuk banyak aplikasi, tidak ada banyak alasan bagus mengapa itu harus digunakan sebagai pengganti alternatif seperti AES.

Meskipun 3DES memegang tempat penting dalam kriptografi sebagai tindak lanjut dari DES, tahun-tahun kejayaannya telah berakhir dan saatnya untuk melanjutkan. Jika Anda ingin mengamankan sistem Anda di masa mendatang, Anda harus menggunakan algoritma yang lebih mutakhir.

Terkait: Jenis enkripsi umum dijelaskan

Paket X oleh DoD berlisensi di bawah CC0

Brayan Jackson Administrator
Candidate of Science in Informatics. VPN Configuration Wizard. Has been using the VPN for 5 years. Works as a specialist in a company setting up the Internet.
follow me
Like this post? Please share to your friends:
Leave a Reply

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

4 + 6 =

map