# Twofish
Kriptografide Twofish, 128 bit ve 256 bite kadar anahtar boyutlarına sahip simetrik bir anahtar blok şifresidir. Advanced Encryption Standard yarışmasının beş finalistinden bir tanesiydi, ancak standardizasyon için seçilmedi. Twofish, Blowfish'in önceki blok şifrelesi ile ilgilidir.
Twofish'in ayırt edici özellikleri, önceden hesaplanmış anahtara bağlı S-kutularının kullanılması ve nispeten karmaşık bir anahtar programıdır. Bir n-bit anahtarın bir yarısı gerçek şifreleme anahtarı olarak kullanılır ve n-bit anahtarın diğer yarısı şifreleme algoritmasını değiştirmek için kullanılır. Twofish, diğer tasarımlardan bazı şeyleri kullanmaktadır; örneğin, SAFER şifre ailesinden sözde Hadamard dönüşümü (PHT). Twofish, DES gibi bir Feistel yapısına sahiptir. Twofish ayrıca ayrılabilir bir maksimum mesafe matrisi kullanır.
1998'de piyasaya sürüldüğünde, Twofish 128 bitlik anahtarlar için Rijndael'den biraz daha yavaştı, ancak 256 bitlik anahtarlar için biraz daha hızlıydı. 2008'den beri, neredeyse tüm AMD ve Intel işlemciler, AES komut seti aracılığıyla Rijndael algoritmasının donanım hızlandırmasını içeriyor; Komut setini kullanan Rijndael uygulamaları artık Twofish uygulamalarından çok daha hızlıdır.
Twofish, Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall ve Niels Ferguson tarafından tasarlandı: Twofish'in daha fazla kriptanalizini gerçekleştirmek için bir araya gelen "Geliştirilmiş ve güncellenmiş Twofish ekibi". Diğer AES yarışmacıları arasından Stefan Lucks, Tadayoshi Kohno ve Mike Stay gibi isimlerde vardı.
Twofish şifreleme metodunun patenti alınmamıştır ve referansı kamuya açık hale getirilmiştir. Sonuç olarak, Twofish algoritması herhangi bir kısıtlama olmaksızın herkesin kullanımına açık ve ücretsizdir. OpenPGP standardında (RFC 4880) bulunan birkaç şifrelemeden biridir. Bununla yanı sıra Twofish, daha uzun süredir mevcut da bulunmakta olan Blowfish'ten daha az bir ilgi görmüştür bir kullanım gördü.


## Performans.
Performans kısmını tasarlanırken Twofish'te her zaman önemli bir faktör olmuştur. Twofish, şifreleme hızı, bellek kullanımı, donanım kapısı sayısı, anahtar kurulumu ve diğer parametrelerin önemine bağlı olarak birkaç performans değiş tokuşu katmanına izin verecek şekilde tasarlanmıştır. Bu, çeşitli uygulamalarda uygulanabilen oldukça esnek bir algoritmaya izin verir.
Twofish için donanımda olduğu kadar yazılımda da yapılabilecek çok sayıda uzay-zaman değiş tokuşu vardır. Böyle bir değiş tokuşun bir örneği, iki veya daha fazla faktörün hız artışlarına yol açabilen yuvarlak alt anahtarların veya s-kutularının önceden hesaplanması olabilir. Ancak bunlar, onları depolamak için gereken daha fazla RAM pahasına gelir .
Aşağıdaki tablodaki tahminlerin tümü mevcut 0,35 μm CMOS teknolojisine dayanmaktadır.


## Kriptoanaliz.
1999'da Niels Ferguson, 2256 adım kullanarak 256 bit anahtar sürümünün 16'sından 6'sını kıran imkansız bir diferansiyel saldırı yayınladı .
2000 yılı itibarıyla, Twofish blok şifresinin en iyi yayınlanmış kriptanalizi, tam 16-yuvarlak versiyonun kesilmiş bir diferansiyel kriptanalizidir. Makale, kesik diferansiyellerin olasılığının blok başına 2-57,3 olduğunu ve iyi bir kesik diferansiyel çifti bulmak için kabaca 251 seçilmiş düz metin (32  petabayt değerinde veri) gerekeceğini iddia ediyor.
Bruce Schneier, 2005 tarihli bir blog girişinde, bu makalenin tam bir kriptanalitik saldırı olmadığını, yalnızca bazı varsayımsal ayırıcı özellikler sunduğunu söyledi: "Fakat teorik bir perspektiften bile, Twofish uzaktan bile bozuk değil. Bu sonuçların herhangi bir uzantısı olmamıştır. 2000 yılında yayınlandıklarından beri."


## Makaleler.
  - Bruce Schneier  John Kelsey  Doug Whiting  David Wagner  Chris Hall  Niels Ferguson (1998-06-15) "İki Balık Şifreleme Algoritması" 
  - Bruce Schneier  John Kelsey  Doug Whiting  David Wagner  Chris Hall  Niels Ferguson (1999-03-22). "Twofish Şifreleme Algoritması: 128-Bit Blok Şifre. New York: John Wiley & Sons"