Sandi Feistel
Dalam kriptografi, sandi Feistel adalah struktur simetris yang digunakan dalam konstruksi sandi blok, dinamai menurut nama kriptografer IBM Jerman, Horst Feistel; ini juga umumnya dikenal sebagai jaringan Feistel. Sekumpulan besar sandi blok menggunakan skema ini, termasuk Standar Enkripsi Data
Struktur Feistel memiliki keuntungan bahwa operasi enkripsi dan dekripsi sangat mirip, bahkan identik dalam beberapa kasus, hanya membutuhkan pembalikan jadwal kunci. Oleh karena itu ukuran kode atau sirkuit yang diperlukan untuk mengimplementasikan cipher tersebut hampir setengahnya.
Konstruksi Feistel bersifat iteratif yang membuat implementasi kriptosistem dalam perangkat keras menjadi lebih mudah.
Jaringan Feistel dan konstruksi yang serupa adalah sandi produk, dan karenanya menggabungkan beberapa putaran operasi berulang, seperti:
- Bit-shuffling (sering disebut kotak permutasi atau kotak-P)
- Fungsi non-linear sederhana (sering disebut kotak substitusi atau kotak-S)
- Pencampuran linear (dalam arti aljabar modular) menggunakan XOR untuk menghasilkan fungsi dengan sejumlah besar apa yang digambarkan Claude Shannon sebagai "kebingungan dan difusi".
Bit shuffling menciptakan efek difusi, sementara substitusi digunakan untuk kebingungan.
Pekerjaan teoretis
Banyak sandi blok simetris modern menggunakan jaringan Feistel, dan struktur dan sifat-sifat sandi Feistel telah dieksplorasi secara ekstensif oleh para kriptografer. Secara khusus, Michael Luby dan Charles Rackoff menganalisa konstruksi sandi blok Feistel, dan membuktikan bahwa jika fungsi putaran adalah fungsi pseudorandom yang aman secara kriptografi, dengan Ki digunakan sebagai seed, maka 3 putaran cukup untuk membuat sandi blok menjadi permutasi pseudorandom, sementara 4 putaran cukup untuk membuatnya menjadi permutasi pseudorandom yang "kuat" (yang berarti bahwa sandi blok ini tetap pseudorandom bahkan untuk musuh yang mendapatkan akses oracle ke permutasi inversnya). Karena hasil yang sangat penting dari Luby dan Rackoff ini, cipher Feistel kadang-kadang disebut cipher blok Luby-Rackoff. Studi teoritis lebih lanjut menggeneralisasi konstruksi, dan mendefinisikan batasan yang lebih tepat untuk keamanan.
Konstruksi
Biarkan F {\displaystyle {\rm {F}}} menjadi fungsi putaran dan biarkan K 1 , K 2 , ... , K n {\displaystyle K_{1},K_{2},\ldots ,K_{n}} menjadi sub-kunci untuk putaran 1 , 2 , ... , n {\displaystyle 1,2,\ldots ,n} masing-masing.
Maka operasi dasarnya adalah sebagai berikut:
Pisahkan blok plainteks menjadi dua bagian yang sama, ( L 1 {\displaystyle L_{1}}} , R 1 {\displaystyle R_{1}}} )
Untuk setiap putaran i = 1, 2, ... , n {\displaystyle i=1,2,\dots ,n} , hitung (kalkulasi)
L i + 1 = R i {\displaystyle L_{i+1}=R_{i}}, }
R i + 1 = L i ⊕ F ( R i , K i ) {\displaystyle R_{i+1}=L_{i}\oplus {\rm {F}}(R_{i},K_{i})} .
Maka ciphertextnya adalah ( R n + 1 , L n + 1 ) {\displaystyle (R_{n+1},L_{n+1})} . (Umumnya dua buah R n {\displaystyle R_{{n}} dan L n {\displaystyle L_{n}} tidak ditukar setelah putaran terakhir).
Dekripsi ciphertext ( R n , L n ) {\displaystyle (R_{n},L_{n})} dilakukan dengan menghitung untuk i = n , n - 1 , ... , 1 {\displaystyle i = n , n-1 , ... , 1}
R i = L i + 1 {\displaystyle R_{i}=L_{i+1}}, }
L i = R i + 1 ⊕ F ( L i + 1 , K i ) {\displaystyle L_{i}=R_{i+1}\oplus {\rm {F}}(L_{i+1},K_{i})} .
Kemudian ( L 1 , R 1 ) {\displaystyle (L_{1},R_{1})} adalah plaintext lagi.
Salah satu keuntungan dari model ini adalah bahwa fungsi bulat F {\displaystyle {\rm {F}}} tidak harus invertibel, dan bisa sangat kompleks.
Diagram menggambarkan proses enkripsi. Dekripsi hanya membutuhkan pembalikan urutan subkey K n , K n - 1 , ... , K 1 {\displaystyle K_{n},K_{n-1}},\ldots ,K_{1}}} dengan menggunakan proses yang sama; ini adalah satu-satunya perbedaan antara enkripsi dan dekripsi:
Sandi Feistel yang tidak seimbang menggunakan struktur yang dimodifikasi di mana L 1 {\displaystyle L_{1}} dan R 1 {\displaystyle R_{1}} tidak memiliki panjang yang sama. Sandi MacGuffin adalah contoh eksperimental dari sandi semacam itu.
Konstruksi Feistel juga digunakan dalam algoritma kriptografi selain block cipher. Sebagai contoh, skema Optimal Asymmetric Encryption Padding (OAEP) menggunakan jaringan Feistel yang sederhana untuk mengacak ciphertext dalam skema enkripsi kunci asimetris tertentu.
Operasi jaringan Feistel pada block cipher, di mana P adalah plaintext dan C adalah ciphertext
Daftar sandi Feistel
Feistel atau Feistel yang dimodifikasi: Blowfish, Camellia, CAST-128, DES, FEAL, ICE, KASUMI, LOKI97, Lucifer, MARS, MAGENTA, MISTY1, RC5, TEA, Triple DES, Twofish, XTEA, GOST 28147-89
Pertanyaan dan Jawaban
T: Apa yang dimaksud dengan sandi Feistel?
J: Sebuah sandi Feistel adalah sebuah struktur simetris yang digunakan dalam konstruksi sandi blok, dinamai menurut nama kriptografer IBM Jerman, Horst Feistel. Ia juga secara umum dikenal sebagai jaringan Feistel.
T: Apa saja keuntungan menggunakan struktur Feistel?
J: Keuntungan utama menggunakan struktur Feistel adalah bahwa operasi enkripsi dan dekripsi sangat mirip, bahkan identik dalam beberapa kasus, hanya membutuhkan pembalikan jadwal kunci. Hal ini mengurangi ukuran kode atau sirkuit yang diperlukan untuk mengimplementasikan cipher tersebut hampir setengahnya. Selain itu, sifat iteratifnya membuat implementasi cryptosystem dalam perangkat keras menjadi lebih mudah.
T: Bagaimana Claude Shannon mendeskripsikan "kebingungan dan difusi"?
J: Claude Shannon mendeskripsikan "kebingungan dan difusi" sebagai kehadiran kedua elemen dalam jumlah besar untuk membuat penyerang kesulitan untuk menguraikan pesan terenkripsi.
T: Teknik apa yang digunakan untuk menciptakan kebingungan dan difusi?
J: Kebingungan dan difusi diciptakan melalui pengacakan bit (sering disebut kotak permutasi atau kotak-P) dan fungsi non-linear sederhana (sering disebut kotak substitusi atau kotak-S), serta pencampuran linear (dalam arti aljabar modular) menggunakan XOR. Bit shuffling menciptakan efek difusi, sementara substitusi digunakan untuk kebingungan.
T: Apa jenis sandi yang merupakan jaringan Feistel?
J: Jaringan Feistel adalah jenis sandi produk yang menggabungkan beberapa putaran operasi berulang untuk mengenkripsi data dengan aman.
T: Siapa yang mengembangkan jenis kriptografi ini?
J: Struktur Feistel dikembangkan oleh kriptografer IBM Jerman, Horst Feistel.
T: Apakah Standar Enkripsi Data berdasarkan pada jenis kriptografi ini?
J: Ya, Standar Enkripsi Data menggunakan jenis kriptografi ini yang menggunakan prinsip yang sama seperti yang diuraikan di atas untuk menciptakan kebingungan dan difusi di dalam pesan terenkripsi.