Naar inhoud springen

Blokvercijfering

Uit Wikipedia, de vrije encyclopedie

Blokvercijfering is een algoritme uit de symmetrische cryptografie, dat tot doel heeft om een blok aan klare tekst te transformeren naar een blok aan cijfer tekst. Gedurende deze versleuteling maakt het algoritme van een geheime sleutel gebruik voor zowel de encryptie als wel voor de decryptie. De andere algoritmen in de symmetrische cryptografie werken met stroomvercijfering.

Bij blokvercijfering wordt een boodschap blok voor blok versleuteld dan wel ontsleuteld. Een blok bestaat uit een aantal bits. De blokgrootte is meestal even groot als de lengte van de sleutel. De blokgrootte is overigens telkens van een vaste lengte, bijvoorbeeld 64 bits of 128 bits. Het komt daartoe soms voor dat een blok nog verplicht moet worden gepad. DES voegt bijvoorbeeld één 1 bit toe, om vervolgens het blok op te vullen met een aantal 0 bits. Het gevolg hiervan is dat wanneer men een identiek blok klare tekst versleutelt, dit meestal één en hetzelfde blok cijfertekst oplevert.

De encryptie en decryptie van een boodschap geschiedt volgens een van de volgende modi, in het Engels: mode of operation:[1]

  • Electronic Code Book ECB
  • Cipher Block Chaining CBC
  • Cipher Feedback Mode CFB
  • Output Feedback Mode OFB

Voorbeelden van blokvercijferings-algoritmes zijn DES, IDEA en AES.

Electronic Code Book ECB

[bewerken | brontekst bewerken]

De ECB modus is snel als het gaat om het versleutelen en ontsleutelen, de tekst kan in elke volgorde en parallel worden verwerkt. Een foute bit kan er voor zorgen dat een blok verloren gaat, bit verlies is niet te repareren. Omdat identieke klare teksten tot identieke cijferteksten worden vercijferd ontstaan er data-patronen. De vertrouwelijkheid van de boodschap is hiermee dan ook in het geding.

versleutelen met de ECB mode

De formule voor ECB versleuteling:

ontsleutelen met de ECB mode

De formule voor ECB decryptie:

Cipher Block Chaining CBC

[bewerken | brontekst bewerken]

Het probleem bij ECB is dat een derde persoon, Eve, eenvoudig blokken kan toevoegen aan de boodschap dan wel blokken kan verwijderen. Het is dus van belang een bepaalde controle in te bouwen. De controle die CBC propageert is een controle door een keten van blokken te creëren, waarbij elk cijfertekstblok afhankelijk is van al de voorgaande blokken. Om dit effect te bewerkstelligen zal er gebruik worden gemaakt van de booleaanse operator XOR. Dezelfde blokken klare tekst anders zullen worden versleuteld om ook eventuele data-patronen te verbergen, zodat er verschillende cijfertekstblokken ontstaan bij een identieke klare tekst.

Wanneer CBC wordt toegepast zal de encryptie sequentieel geschieden. Een verandering van een bit in de cijfertekst leidt bij het ontsleutelen tot fouten in het corresponderende blok klare tekst. Bitverlies is dus nog steeds niet te repareren.

Om elke boodschap uniek te maken voegt men in de CBC mode een initialisatievector IV toe aan de boodschap. Een IV is een blok van willekeurige nummers om zo te verzekeren dat geen boodschap hetzelfde begin heeft. Daartoe moeten zowel zender als ontvanger dezelfde IV gebruiken bij het versleutelen en ontsleutelen van de boodschap. Qua lengte is de IV overigens vaak gelijk aan de lengte van het te vercijferen blok klare tekst.

versleutelen met de CBC mode

De formule voor CBC encryptie:

ontsleutelen met de CBC mode

De formule voor CBC decryptie:

Een variatie van CBC is de PCBC Propagating Cipher Block Chaining mode. De formule voor PCBC encryptie:

De formule voor PCBC decryptie:

Cipher Feedback Mode CFB

[bewerken | brontekst bewerken]

CFB zorgt ervoor dat een blokvercijfering geïmplementeerd wordt als een zelf synchroniserende stroomvercijfering. Een zelf synchroniserende blokvercijfering maakt het mogelijk om een deel, bijvoorbeeld acht bytes, van een blok te versleutelen. Een deel van een blok is dus bits en is qua lengte kleiner dan het blok.

Een probleem met Cipher Feedback Mode is dat als er een bit van de cijfertext tijdens het omzetten per ongeluk wordt verwisseld, de acht bytes die worden ontsleuted terwijl de verkeerde byte in het schuifregister zit, deze in zijn geheel fout zal zijn. Wanneer de verkeerde byte uit het schuifregister gepusht is zal weer correcte klare tekst worden gegenereerd. Het effect van een enkele geïnverteerde bit is dus relatief klein aangezien de rest van de boodschap toch correct blijft.

versleutelen met de CFB mode

De formule voor CFB encryptie:

De IV wordt dus links geplaatst in de input queu (IV = C0), na versleuteling zal het meeste linkse deel van de output queu ge-XORed worden met het meest rechtse deel van de klare tekst. Na het toepassen van de XOR zal deze cijfertekst deel rechts aan de input queu worden toegevoegd. Hierna kan het volgende deel van de klare tekst worden verwerkt. Dit herhaalt zich totdat de hele klare tekst is verwerkt.

ontsleutelen met de CFB mode

Let erop dat bij CFB de input queu bij decryptie wordt versleuteld en niet ontsleuteld.

De formule voor CFB decryptie:

Output Feedback Mode OFB

[bewerken | brontekst bewerken]

OFB zorgt ervoor dat een blokvercijfering geïmplementeerd wordt als een zelfsynchroniserende stroomvercijfering. Bij OFB kan er geen sprake zijn van meerdere voorwaartse vercijferingen. Parallelle vercijfering is niet mogelijk wanneer er gebruik wordt gemaakt van deze werkwijze. Maar als de IV bekend is dan kan men wel de outputblokken genereren voordat de klare tekst of de cijfertekst beschikbaar is.

versleutelen met de OFB mode
ontsleutelen met de OFB mode

De formule voor OFB encryptie en decryptie: