Twofish

In cryptografie is Twofish een coderingsalgoritme ontworpen door Bruce Schneir. Het is een symmetrisch sleutelblokcijfer, wat betekent dat een enkele sleutel wordt gebruikt voor zowel codering als decodering. Twofish heeft een blokgrootte van 128 bits en sleutelgroottes tot 256 bits.

Twofish is gerelateerd aan het eerdere blokcijfer Blowfish, een 64-bits klokcijfer dat een sleutellengte gebruikt die varieert tussen 32 en 448 bits, ook ontwikkeld door Bruce Schneir. Twofish is ook gerelateerd aan Advanced Encryption Standard (AES), een 128-bits blokcijfer dat de Amerikaanse overheid heeft aangenomen als specificatie voor de codering van elektronische gegevens door het US National Institute of Standards and Technology in 2001. Terwijl Twofish een finalist was om de industriestandaard voor encryptie te worden, werd het verslagen door AES vanwege de langzamere snelheid van Twofish.

Twofish functies

Twofish heeft onderscheidende kenmerken die het onderscheiden van andere cryptografische protocollen, waaronder het gebruik van een vooraf berekende, sleutelafhankelijke S-box (substitutiebox), die een basiscomponent is van elk symmetrisch sleutelalgoritme dat substitutie uitvoert. De S-box maskeert de relatie tussen de sleutel en de cijfertekst. Vanwege de precomputatie is Twofish kwetsbaar voor side channel-aanvallen.

Het versleutelingsalgoritme maakt gebruik van een matrix die met maximale afstand kan worden gescheiden, of een matrix die een functie vertegenwoordigt met bepaalde diffusie-eigenschappen die nuttige toepassingen hebben in cryptografie. Twofish heeft een Fiestel-structuur, een symmetrische structuur die wordt gebruikt bij de constructie van blokcijfers. Dezelfde structuur wordt ook gebruikt in Data Encryption Standard (DES), een invloedrijke versleutelingsstandaard die populair was in de jaren 1970.

Twofish is niet gepatenteerd en de referentie-implementatie is in het publieke domein geplaatst, wat betekent dat het algoritme voor iedereen gratis te gebruiken is zonder beperkingen. Twofish wordt minder vaak gebruikt dan Blowfish.