Kriptografide Twofish, Bruce Schneir tarafından tasarlanan bir şifreleme algoritmasıdır. Simetrik bir anahtar blok şifresidir, yani hem şifreleme hem de şifre çözme için tek bir anahtar kullanılır. Twofish, 128 bitlik bir blok boyutuna ve 256 bit'e kadar anahtar boyutlarına sahiptir.
Twofish, Bruce Schneir tarafından geliştirilen 64 ile 32 bit arasında değişen bir anahtar uzunluğu kullanan 448 bitlik bir saat şifresi olan eski blok şifresi Blowfish ile ilgilidir. Twofish ayrıca, Amerika Birleşik Devletleri hükümetinin 128 yılında ABD Ulusal Standartlar ve Teknoloji Enstitüsü tarafından elektronik verilerin şifrelenmesi için şartname olarak benimsediği 2001 bitlik bir blok şifre olan Gelişmiş Şifreleme Standardı (AES) ile de ilgilidir. Twofish finalist iken Şifreleme için endüstri standardı haline gelmek için, Twofish'in daha yavaş hızı nedeniyle AES tarafından yenildi.
Twofish özellikleri
Twofish, ikame işlemini gerçekleştiren herhangi bir simetrik anahtar algoritmasının temel bir bileşeni olan önceden hesaplanmış, anahtara bağlı bir S-kutusu (ikame kutusu) da dahil olmak üzere onu diğer şifreleme protokollerinden ayıran ayırt edici özelliklere sahiptir. S-kutusu, anahtar ve şifreli metin arasındaki ilişkiyi maskelemek için çalışır. Ön hesaplama nedeniyle, Twofish yan kanal saldırılarına karşı savunmasızdır.
Şifreleme algoritması, bir Maksimum Mesafe Ayrılabilir matrisi veya kriptografide yararlı uygulamalara sahip belirli difüzyon özelliklerine sahip bir işlevi temsil eden bir matris kullanır. Twofish, blok şifrelerin yapımında kullanılan simetrik bir yapı olan Fiestel yapısına sahiptir. Aynı yapı, 1970'lerde popüler olan etkili bir şifreleme standardı olan Veri Şifreleme Standardında (DES) da kullanılır.
Twofish patentli değildir ve referans uygulaması kamuya açık olarak yerleştirilmiştir, bu da algoritmanın herhangi bir kısıtlama olmaksızın herkes için ücretsiz olduğu anlamına gelir. Twofish, Blowfish'ten daha az yaygın kullanıma sahiptir.