Döngü (kriptografi)

Kriptografide bir **döngü**, **çevrim**, **tur** veya **döngü fonksiyonu** () algoritma içinde birçok kez tekrarlanan (yinelemeli) temel bir dönüşümdür. Büyük bir algoritmik işlevi döngülere bölmek hem uygulamayı hem de kriptanalizi basitleştirir.

Örneğin, aşırı basitleştirilmiş üç döngülü bir şifre kullanılarak şifreleme C = R_3(R_2(R_1(P))) şeklinde yazılabilir, burada  şifreli metin ve  düz metindir. Tipik olarak, R_1, R_2, ... döngüleri, **döngü sabiti**  ve blok şifreler için anahtar çizelgesinden *döngü anahtarı* ile parametrelendirilen aynı fonksiyon kullanılarak uygulanır. Parametrelendirme, şifrenin kaydırma saldırısına ("slide attack") yol açabilecek **kendine benzerliğini** azaltmak için gereklidir.

Döngü sayısını artırmak "neredeyse her zaman" diferansiyel ve doğrusal kriptanalize karşı koruma sağlar, çünkü bu araçlar için deşifre çabası, döngü sayısı ile katlanarak artar. Ancak, bazı saldırılar döngü sayısına bağlı olmadığından döngü sayısını artırmak zayıf şifreleri "her zaman" güçlü hale getirmez.

Basit değişmeyen işlemlerin tekrar tekrar uygulanmasıyla karıştırma ve dağıtma üreten bir yinelemeli şifre fikri 1945 yılına, C. E. Shannon'ın *[[Gizlilik Sistemlerinin İletişim Teorisi]]* ("Communication Theory of Secrecy Systems") adlı çalışmasına; o zamanki gizli versiyonuna kadar uzanır. Shannon, dinamik sistemler teorisi alanında kullanılan karıştırma dönüşümlerinden esinlenmiştir (bkz. at nalı haritası). Modern şifrelerin çoğu yinelemeli tasarım kullanır ve döngü sayısı genellikle 8 ile 32 arasında seçilir (kriptografik özetlerde 64 ve hatta 80 kullanılır).

Bazı Feistel benzeri şifre tanımları için, özellikle RC5 için, verinin bir kısmının dönüşümünü tanımlamak için bir "**yarım döngü"** terimi kullanılır (Feistel tasarımının ayırt edici bir özelliği). Bu işlem Feistel şifrelerinin geleneksel tanımlarında (DES gibi) tam döngüye karşılık gelir.

## Döngü sabitleri
Şifreleme sürecine döngüye bağlı sabitlerin eklenmesi döngüler arasındaki simetriyi bozar ve böylece en belirgin kaydırma saldırılarını engeller. Bu teknik çoğu modern blok şifrenin standart bir özelliğidir. Bununla birlikte, döngü sabitlerinin kötü seçilmesi veya sabitler ile diğer şifre bileşenleri arasındaki istenmeyen ilişkiler yine de kaydırma saldırılarına izin verebilir (örneğin, biçim koruyan şifreleme modu FF3'ün ilk sürümüne saldırmak).

Birçok hafif şifre, çok basit anahtar zamanlaması kullanır: yuvarlak anahtarlar döngü sabitlerinin şifreleme anahtarına eklenmesiyle elde edilir. Bu durumda kötü bir döngü sabiti seçimi, şifreyi değişmez saldırılara karşı savunmasız hale getirebilir; bu şekilde kırılan şifreler arasında SCREAM ve Midori64 bulunur.

## Optimizasyon
Daemen ve Rijmen şifreyi optimize etmenin amaçlarından birinin döngü karmaşıklığı ve döngü sayısının çarpımı olan toplam iş yükünü azaltmak olduğunu ileri sürmektedir. Bu hedefe ulaşmak için iki yaklaşım vardır:
* Yerel optimizasyon, tek bir döngünün en kötü durum davranışını iyileştirir (Feistel şifreleri için iki döngü);
* Global optimizasyon, birden fazla döngünün en kötü durum davranışını optimize ederek daha az karmaşık bileşenlerin kullanılmasına olanak sağlar.

## İndirgenmiş döngü şifreleri
Kriptanaliz teknikleri, şifrelerin tasarımcıları tarafından belirtilenden daha az döngülü versiyonlarının kullanılmasını içerir. Tek bir döngü genellikle kriptografik olarak zayıf olduğundan, şifrelerin tam sürümüne karşı çalışmayan birçok saldırı bu tür *indirgenmiş döngülü* ("reduced-round") varyantlarda çalışacaktır. Bu tür bir saldırının sonucu algoritmanın gücü hakkında değerli bilgiler sağlar, tam şifrenin tipik bir kırılması, azaltılmış döngülü bir şifreye karşı başarı olarak başlar.

## Notlar

## Kaynakça
* 
* 
* 
* 
* 
* 
* 
* 
*