Dalam kriptografi, **sandi Feistel** (juga dikenal sebagai **penyandian blok Luby–Rackoff**) adalah struktur simetris yang dipakai dalam penyusunan penyandian blok. Sandi ini dinamai dari fisikawan dan kriptografer kelahiran Jerman Horst Feistel. Sandi ini juga dikenal sebagai **jaringan Feistel**. Sebagian besar penyandian blok menggunakan skema ini, termasuk Standar Enkripsi Data Amerika Serikat, GOST Uni Soviet, serta sandi modern Blowfish dan Twofish. Dalam sandi Feistel, enkripsi dan dekripsi sangat mirip dan keduanya hanya menjalankan "fungsi ronde" secara iteratif sebanyak sekian kali (jumlah yang tetap).

Sejarah
-------

Banyak penyandian blok simetris yang berdasar pada jaringan Feistel. Jaringan Feistel pertama kali dipakai secara komersial dalam sandi Lucifer milik IBM yang didesain oleh Horst Feistel dan Don Coppersmith pada tahun 1973. Jaringan Feistel mulai disegani ketika, pada tahun 1976, Pemerintah Federal Amerika Serikat mengadopsi DES yang berdasar pada Lucifer dengan perubahan oleh NSA. Seperti komponen lain dalam DES, bentuk iteratif jaringan ini membuat implementasi dalam perangkat keras lebih mudah, terutama pada perangkat keras pada zamannya.

Desain
------

Jaringan Feistel menggunakan fungsi ronde, yaitu fungsi yang menerima dua masukan, blok data dan subkunci, serta mengembalikan satu keluaran yang berukuran sama dengan blok data. Pada tiap ronde, fungsi ronde dilakukan pada setengah data yang akan dienkripsi, lalu keluarannya dikenai operasi XOR dengan setengah data yang lain. Hal ini diulangi beberapa kali dalam jumlah yang tetap. Hasil akhirnya adalah data yang telah dienkripsi.

Keuntungan jaringan Feistel dibandingkan desain penyandian lain, misal jaringan substitusi–permutasi, adalah bahwa seluruh operasi dijamin dapat dibalik, yaitu hasil enkripsi dapat didekripsi, meski fungsi ronde tidak memiliki inversi. Fungsi ronde dapat dibuat serumit mungkin karena tidak harus memiliki inversi.:465:347 Terlebih lagi, operasi enkripsi dan dekripsi sangat mirip, bahkan sama pada beberapa kasus, serta hanya membutuhkan pembalikan penjadwalan kunci. Karena ukuran kode atau rangkaian jaringan ini dapat dipotong setengahnya.

Karya teoretis
--------------

Struktur dan sifat-sifat sandi Feistel telah dianalisis oleh para kriptografer.

Michael Luby dan Charles Rackoff menganalisis susunan sandi Feistel dan membuktikan bahwa, bila fungsi ronde adalah fungsi acak semu yang aman secara kriptografi dengan *Ki* sebagai kunci, tiga ronde sudah cukup untuk membuat penyandian blok permutasi acak semu. Empat ronde akan membuat permutasi acak semu yang "kuat"; itu berarti bahwa ia akan tetap acak semu meski kepada orang yang memiliki akses ke inversi permutasinya. Karena hasil yang sangat penting ini, sandi Feistel terkadang disebut sebagai penyandian blok Luby–Rackoff.

Karya-karya teoretis selanjutnya telah menggeneralisasi susunan dan memberi batasan yang lebih jelas untuk keamanan.

Detail susunan
--------------


Struktur dasar jaringan Feistel. Perhatikan bahwa struktur untuk enkripsi dan dekripsi sangat mirip dan hanya berbeda urutan subkunci.Struktur dasar jaringan Feistel. Perhatikan bahwa struktur untuk enkripsi dan dekripsi sangat mirip dan hanya berbeda urutan subkunci. 

Misalkan {\displaystyle \operatorname {F} } sebagai fungsi ronde dan {\displaystyle K\_{0},K\_{1},\dots ,K\_{n}} sebagai subkunci untuk ronde ke-{\displaystyle 0,1,\dots ,n}.

### Operasi dasar

Proses enkripsi dasar adalah sebagai berikut:

1. Bagi blok teks asal menjadi dua bagian sama besar, yaitu {\displaystyle L\_{0}} dan {\displaystyle R\_{0}}.
2. Untuk tiap ronde ke-{\displaystyle i=0,1,\dots ,n}, hitung
{\displaystyle L\_{i+1}=R\_{i}}
{\displaystyle R\_{i+1}=L\_{i}\oplus \operatorname {F} (R\_{i},K\_{i})}
dengan {\displaystyle \oplus } adalah operasi XOR.
3. Hasilnya adalah teks tersandi {\displaystyle (R\_{n+1},L\_{n+1})}.

Proses dekripsi dasar adalah sebagai berikut:

1. Bagi blok teks tersandi menjadi dua bagian sama besar, yaitu {\displaystyle R\_{n+1}} dan {\displaystyle L\_{n+1}}.
2. Untuk tiap ronde ke-{\displaystyle i=n,n-1,\dots ,0}, hitung
{\displaystyle R\_{i}=L\_{i+1}\,}
{\displaystyle L\_{i}=R\_{i+1}\oplus \operatorname {F} (L\_{i+1},K\_{i}).}
3. Hasilnya adalah teks asli {\displaystyle (L\_{0},R\_{0})}.

Diagram di samping menjelaskan enkripsi dan dekripsi. Perhatikan bahwa urutan subkunci dibalik untuk dekripsi; hal ini satu-satunya perbedaan antara enkripsi dan dekripsi.

### Sandi Feistel tak berimbang

Sandi Feistel tak berimbang menggunakan modifikasi struktur sehingga {\displaystyle L\_{0}} dan {\displaystyle R\_{0}} berbeda ukuran. Sandi Skipjack adalah salah satu contohnya.

Pengocokan Thorp adalah kasus ekstrem dari sandi Feistel tak berimbang. Ia hanya menggunakan satu bit pada salah satu sisinya. Ini lebih aman daripada sandi Feistel berimbang, tetapi membutuhkan lebih banyak ronde.

### Kegunaan lain

Susunan Feistel juga dipakai dalam algoritme kriptografi selain penyandian blok. Misalnya, skema OEAP menggunakan jaringan Feistel sederhana untuk mengacak teks tersandi dalam beberapa skema kriptografi kunci publik.

Algoritme Feistel tergeneralisasi dapat dipakai untuk membuat permutasi yang kuat pada domain kecil berukuran bukan perpangkatan dua.

### Jaringan Feistel sebagai komponen desain

Baik seluruh penyandian adalah sandi Feistel maupun tidak, jaringan mirip Feistel dapat dipakai untuk komponen desain penyandian. Misalnya, MISTY1 adalah sandi Feistel dengan jaringan Feistel tiga ronde sebagai fungsi rondenya; Skipjack adalah modifikasi sandi Feistel yang memakai jaringan Feistel dalam permutasi G-nya; serta Threefish adalah penyandian blok non-Feistel yang menggunakan fungsi MIX mirip Feistel.

Daftar penyandian Feistel
-------------------------

**Feistel atau modifikasinya**

* Blowfish
* Camellia
* CAST-128
* DES
* FEAL
* GOST 28147-89
* ICE
* KASUMI
* LOKI97
* Lucifer
* MAGENTA
* MARS
* MISTY1
* RC5
* Simon
* TEA
* Triple DES
* Twofish
* XTEA

**Generalisasi Feistel**

* CAST-256
* CLEFIA
* MacGuffin
* RC2
* RC6
* Skipjack
* SMS4

Lihat pula
----------

* Kriptografi
* Penyandian aliran
* Jaringan substitusi–permutasi
* Enkripsi format terjaga
* Skema Lai–Massey

Referensi
---------

1. ↑  Menezes, Alfred J.; Oorschot, Paul C. van; Vanstone, Scott A. (2001). *Handbook of Applied Cryptography*Perlu mendaftar (gratis) (edisi ke-5). hlm. 251. ISBN 978-0-8493-8523-0.
2. ↑  Schneier, Bruce (1996). *Applied Cryptography*. New York: John Wiley & Sons. ISBN 0-471-12845-7.
3. ↑  Stinson, Douglas R. (1995). *Cryptography: Theory and Practice*. Boca Raton: CRC Press. ISBN 0-8493-8521-0.
4. ↑  Luby, Michael; Rackoff, Charles (April 1988). "How to Construct Pseudorandom Permutations from Pseudorandom Functions". *SIAM Journal on Computing*. **17** (2): 373–386. doi:10.1137/0217022. ISSN 0097-5397.
5. ↑  Patarin, Jacques (Oktober 2003). Boneh, Dan, ed. *Luby–Rackoff: 7 Rounds Are Enough for 2*n*(1−ε) Security* (PDF). *Advances in Cryptology—CRYPTO 2003*. Lecture Notes in Computer Science. **2729**. hlm. 513–529. doi:10.1007/b11817. ISBN 978-3-5404-0674-7. Diakses tanggal 27 Juli 2009.
6. ↑  Zheng, Yuliang; Matsumoto, Tsutomu; Imai, Hideki (20 Agustus 1989). "On the Construction of Block Ciphers Provably Secure and Not Relying on Any Unproved Hypotheses". *Advances in Cryptology — CRYPTO' 89 Proceedings*. Lecture Notes in Computer Science (dalam bahasa Inggris). **435**: 461–480. doi:10.1007/0-387-34805-0\_42. ISBN 978-0-3879-7317-3.
7. ↑  Schneier, Bruce; Kelsey, John (21 Februari 1996). *Unbalanced Feistel networks and block cipher design*. *Fast Software Encryption*. Lecture Notes in Computer Science (dalam bahasa Inggris). **1039**. hlm. 121–144. doi:10.1007/3-540-60865-6\_49. ISBN 978-3-5406-0865-3. Diakses tanggal 21 November 2017.
8. 1 2  Morris, Ben; Rogaway, Phillip; Stegers, Till (2009). *How to Encipher Messages on a Small Domain* (PDF). *Advances in Cryptology - CRYPTO 2009*. Lecture Notes in Computer Science (dalam bahasa Inggris). **5677**. hlm. 286–302. doi:10.1007/978-3-642-03356-8\_17. ISBN 978-3-642-03355-1. Diakses tanggal 21 November 2017.

| * l
* b
* s
Penyandian blok |
| --- |
| Algoritme umum | 
* AES
* Blowfish
* DES (penjelasan teknis, Triple DES)
* Serpent
* Twofish

 |
| Algoritme kurang umum | 
* ARIA
* Camellia
* CAST-128
* GOST
* IDEA
* LEA
* RC2
* RC5
* RC6
* SEED
* Skipjack
* TEA (XTEA)

 |
| Algoritme lainnya | 
* 3-Way
* Akelarre
* Anubis
* BaseKing
* BassOmatic
* BATON
* BEAR dan LION
* CAST-256
* Chiasmus
* CIKS-1
* CIPHERUNICORN-A
* CIPHERUNICORN-E
* CLEFIA
* CMEA
* Cobra
* COCONUT98
* Crab
* Cryptomeria/C2
* CRYPTON
* Sandi-CS
* DEAL
* DES-X
* DFC
* E2
* FEAL
* FEA-M
* FROG
* G-DES
* GOST
* Grand Cru
* Hasty Pudding cipher
* Hierocrypt
* ICE
* IDEA NXT
* Intel Cascade Cipher
* Iraqi
* Kalyna
* KASUMI
* KeeLoq
* KHAZAD
* Khufu dan Khafre
* Sandi-KN
* Kuznyechik
* Ladder-DES
* Libelle
* LOKI (97, 89/91)
* Lucifer
* M6
* M8
* MacGuffin
* Madryga
* MAGENTA
* MARS
* Mercy
* MESH
* MISTY1
* MMB
* MULTI2
* MultiSwap
* New Data Seal
* NewDES
* Nimbus
* NOEKEON
* NUSH
* PRESENT
* Q
* RC6
* REDOC
* Red Pike
* S-1
* SAFER
* SAVILLE
* SC2000
* SHACAL
* SHARK (penyandian)
* Simon
* SM4
* Speck
* Spectr-H64
* Square
* SXAL/MBAL
* Threefish
* Treyfer
* UES
* xmx
* XXTEA
* Zodiac

 |
| Desain | 
* Efek salju longsor
* Jaringan substitusi–permutasi
* Kotak-S
* Kotak-P
* Pemutihan kunci (Transformasi pemutihan)
* Pengacakan dan penghamburan
* Penjadwalan kunci
* Sandi Feistel
* Skema Lai–Massey
* Sandi produk
* Ukuran blok
* Ukuran kunci

 |
| Penyerangan(analisis kriptografi) | 
* Serangan brutal (EFF DES cracker)
* MITM (Biclique attack, 3-subset MITM attack)
* Linear (Piling-up lemma)
* Differential (Impossible
* Truncated
* Higher-order)
* Differential-linear
* Distinguishing (Known-key)
* Integral/Square
* Boomerang
* Mod *n*
* Related-key
* Slide
* Rotational
* Timing
* XSL
* Interpolation
* Partitioning
* Davies'
* Rebound
* Weak key
* Tau
* Chi-square
* Time/memory/data tradeoff

 |
| Standardisasi | 
* Proses AES
* CRYPTREC
* NESSIE

 |
| Peralatan/perkakas | 
* Vektor inisialisasi
* Mode operasi
* Bantalan

 |