# Feistel şifresi
Kriptografide, IBM (ABD) için çalışırken öncü araştırmalar yapan Almanya doğumlu fizikçi ve kriptograf Horst Feistel'in ismiyle anılan Feistel şifresi blok şifrelerin yapımında kullanılan simetrik bir yapıdır; aynı zamanda Feistel ağı olarak da bilinir. Blok şifreler, DES(Data Şifreleme Standardı) dahil, büyük oranda bu şemayı kullanır. Feistel yapısı,
şifreleme ve şifre çözme işlemlerinin çok benzer olması, hatta bazı durumlarda aynıdır, sadece anahtar sırasının tersine çevrilmesini gerektirme avantajına sahiptir. Bu nedenle, böyle bir şifreyi uygulamak için gereken kod
veya devrenin büyüklüğü neredeyse yarıya inmiştir.
Feistel ağı raund fonksiyonu olarak adlandırılan dahili fonksiyonu ile yinelenen bir şifredir.


## Tarihçe.
Feistel ağları ilk olarak 1973'te
Horst Feistel ve Don Coppersmith tarafından tasarlanan IBM'in Lucifer şifresinde ticari olarak görülmüştür. ABD Federal Hükûmeti DES'i (NSA tarafından yapılan değişikliklerle Lucifer'e dayanan bir şifre) kabul ettiğinde Feistel ağları
saygınlık kazanmıştır. DES'in diğer bileşenleri gibi, Feistel yapısının iteratif yapısı donanım üzerinde kriptosisteminin daha kolay uygulanmasını sağlamıştır. (özellikle DES'in tasarımında mevcut olan donanım üzerinde).


## Teorik çalışma.
Birçok modern ve bazı eski simetrik blok şifreleri Feistel ağlarına (örn. GOST 28147-89 blok şifrelemesine) dayanmaktadır ve Feistel şifrelerinin yapısı ve özellikleri, kriptograflar tarafından kapsamlı bir şekilde araştırılmıştır. Özellikle Michael Luby and Charles Rackoff Feistel şifre yapısını analiz etmiştir ve raund fonksiyonunun kriptografik olarak güvenli bir sözderastsal (rastgele) fonksiyon(pseudorandom function) olması durumunda, Ki' nin seed olarak kullanılması ile, 3 devir blok şifresine bir sözderastsal yer değiştirme yapmak için yeterli iken, 4 devir bir "güçlü" sözderastsal yer değiştirme yapmak için yeterlidir.
Luby ve Rackoff'un bu çok önemli sonucu nedeniyle, Feistel şifrelerine bazen Luby-Rackoff blok şifreleri denir. Daha fazla teorik çalışma, yapıyı biraz genelleştirdi ve güvenlik için daha kesin sınırlar verdi.


## Yapı Detayları.
F raund fonksiyonu olarak alınır ve sırasıyla devirler 0,1..,n için K0,K1..KN de alt anahtarlar olarak alınır.
Daha sonra temel işlem aşağıdaki gibidir:
Şifreli metin blokları 2 eşit parçaya bölünür, (L0,R0)
Her bir devir için i=0,1..,n hesaplanır
 L_i+1 = R_i 
 R_i+1= L_i ⊕F(R_i, K_i).
Şifreli metin (R_n+1, L_n+1)
Şifreli bir metnin (R_n+1, L_n+1)i=n,n-1,…,0
 R_i = L_i+1 
 L_i = R_i+1 ⊕F(L_i+1, K_i).
Sonra (L0,R0) tekrar şifresiz metindir.
Feistel'in koyma-yer değiştirme ağlarıyla karşılaştırıldığında avantajlarından birisi raund fonksiyonu olan F'in tersine çevrilmesinin gerekmemesidir.
Diagram 
hem şifrelemeyi hem de şifre açmayı göstermektedir. Şifre çözme için alt anahtar sırasının tersine çevrildiğine dikkat edilmesi gerekir; bu, şifreleme ve şifre çözme arasındaki tek farktır.


### Dengesiz Feistel Şifresi.
Dengesiz Feistel şifreleri, L0 ve R0'ın eşit uzunluklarda olmadığı modifiye bir yapı kullanır.Skipjack şifresi, böyle bir şifrenin bir örneğidir. Texas Instruments
dijital imza aktarıcısı, kimlik sorma-yanıt verme işlemi yapmak için tescilli dengesiz Feistel şifresini kullanır.
Thorp shuffle, bir tarafın tek bir bit olduğu dengesiz bir Feistel şifresinin uç bir örneğidir. Bu, dengeli
bir Feistel şifresinden daha kanıtlanabilir güvenlikliğe sahiptir, ancak daha fazla tur gerektirir.


### Diğer Kullanımlar.
Feistel yapısı blok şifrelerden başka aynı zamanda kriptografik algoritmalarda da kullanılır. Örneğin, en uygun asimetrik
şifreleme dolgu (OAEP) şeması, belirli asimetrik anahtar şifreleme şemalarında şifreli metinleri rastgele hale getirmek için basit bir Feistel ağı kullanır.
Genel bir Feistel algoritması, ikinin kuvveti olmayan küçük etki 
alanlarında güçlü permütasyonlar oluşturmak için kullanılabilir (bkz. Formatı koruyan şifreleme).


### Tasarım bileşeni olarak Feistel Ağı.
Tüm şifre bir Feistel şifresi olsun ya da olmasın, feistel benzeri ağlar şifre tasarımının bir parçası
olarak kullanılabilir. Örneğin, MISTY1 devir fonksiyonunda üç aşamalı bir Feistel ağı kullanan bir Feistel şifresidir, Skipjack, G permutasyonunda bir Feistel ağı kullanan modifiye edilmiş bir Feistel şifresidir, Threefish
(Skein parçası), feistel benzeri bir MIX işlevi kullanan, feistel olmayan bir blok şifresidir.


## Feistel Şifrelerinin Listesi.
Feistel veya değiştirilmiş Feistel:
Genelleştirilmiş Feistel: