Het basisschema van een blokcijfer wordt als volgt weergegeven –
Een blokcijfer neemt een blok klare tekstbits en genereert een blok cijfertekstbits, meestal van dezelfde grootte. De grootte van het blok ligt vast in het gegeven schema. De keuze van de blokgrootte is niet rechtstreeks van invloed op de sterkte van het vercijferingsschema. De sterkte van het encryptiesysteem hangt af van de sleutellengte.
Blokgrootte
Hoewel elke blokgrootte aanvaardbaar is, moet bij de keuze van de blokgrootte rekening worden gehouden met de volgende aspecten.
-
Vermijd een zeer kleine blokgrootte – Stel dat de blokgrootte m bits is. Dan zijn de mogelijke combinaties van onbewerkte tekstbits 2m. Als de aanvaller de onbewerkte tekstblokken ontdekt die overeenkomen met eerder verzonden cijfertekstblokken, kan hij een soort “woordenboekaanval” uitvoeren door een woordenboek samen te stellen van onbewerkte tekst/cijfertekstparen die met die encryptiesleutel zijn verzonden. Een grotere blokgrootte maakt de aanval moeilijker omdat het woordenboek groter moet zijn.
-
Geen zeer grote blokgrootte – Bij een zeer grote blokgrootte wordt de werking van het cijfer inefficiënt. Dergelijke plaintexts moeten worden opgevuld voordat ze worden versleuteld.
-
Veelvouden van 8 bits – De blokgrootte is bij voorkeur een veelvoud van 8, omdat dit eenvoudig te implementeren is, aangezien de meeste computerprocessoren gegevens in veelvouden van 8 bits verwerken.
Padding in Block Cipher
Block ciphers verwerken blokken met een vaste grootte (bijvoorbeeld 64 bits). De lengte van de klaartekst is meestal geen veelvoud van de blokgrootte. Bijvoorbeeld, een klaartekst van 150 bits heeft twee blokken van 64 bits elk met een derde blok van 22 bits. Het laatste blok bits moet worden opgevuld met overbodige informatie, zodat de lengte van het laatste blok gelijk is aan de blokgrootte van het schema. In ons voorbeeld moeten aan de resterende 22 bits nog eens 42 overbodige bits worden toegevoegd om een volledig blok te verkrijgen. Het toevoegen van bits aan het laatste blok wordt padding genoemd.
Te veel padding maakt het systeem inefficiënt. Ook kan padding het systeem soms onveilig maken, als de padding altijd met dezelfde bits wordt uitgevoerd.
Block Cipher Schemes
Er is een groot aantal block cipherschema’s in gebruik. Vele daarvan zijn publiekelijk bekend. De populairste en prominentste blokcijfers zijn hieronder opgesomd.
-
Digital Encryption Standard (DES) – Het populaire blokcijfer van de jaren negentig. Het wordt nu beschouwd als een ‘gebroken’ blokcijfer, voornamelijk vanwege de kleine sleutelgrootte.
-
Triple DES – Het is een variantenprogramma gebaseerd op herhaalde DES-toepassingen. Het is nog steeds een gerespecteerd blokcijfer, maar inefficiënt vergeleken met de nieuwe snellere blokcijfers die beschikbaar zijn.
-
Advanced Encryption Standard (AES) – Het is een relatief nieuw blokcijfer gebaseerd op het encryptiealgoritme Rijndael dat de AES-ontwerpwedstrijd heeft gewonnen.
-
IDEA – Het is een voldoende sterk blokcijfer met een blokgrootte van 64 en een sleutelgrootte van 128 bits. Een aantal toepassingen maakt gebruik van IDEA-versleuteling, waaronder vroege versies van het Pretty Good Privacy (PGP)-protocol. Het gebruik van het IDEA-schema is beperkt vanwege octrooikwesties.
-
Twofish – Dit blokcijferprogramma gebruikt een blokgrootte van 128 bits en een sleutel van variabele lengte. Het was een van de finalisten van AES. Het is gebaseerd op het eerdere blokcijfer Blowfish met een blokgrootte van 64 bits.
-
Serpent – Een blokcijfer met een blokgrootte van 128 bits en een sleutellengte van 128, 192 of 256 bits, dat ook een finalist was in de AES-competitie. Het is langzamer, maar heeft een veiliger ontwerp dan andere blokcijfers.
In de volgende secties bespreken we eerst het model van blokcijfer, gevolgd door DES en AES, twee van de meest invloedrijke moderne blokcijfers.