Blokvercijfering

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

De symmetrische cryptografie algoritmen zijn:

Het doel van blokvercijfering is om een blok aan klare tekst te transformeren naar een blok aan cijfertekst. Gedurende dit transformatieproces zal het algoritme gebruikmaken van een geheime sleutel voor de encryptie als wel voor de decryptie.

Stroomvercijfering[bewerken]

Bij stroomvercijfering wordt een boodschap bit voor bit versleuteld dan wel ontsleuteld. Dezelfde bit kan afhankelijk van de sleutel wel anders versleuteld worden.

Tijdens ontcijfering is het wel zo dat wanneer één bit in de cijfertekst fout is, dit resulteert in een één bit fout in de klare tekst.

Blokvercijfering[bewerken]

Bij blokvercijfering wordt een boodschap blok voor blok versleuteld dan wel ontsleuteld. Een blok bestaat uit een aantal bits. De blokgrootte is veelal gelijk aan 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 gepad moet worden. 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 veelal zal resulteren in één en hetzelfde blok cijfertekst.

De encryptie/decryptie van een boodschap geschiedt volgens één 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-encryptiealgoritmes zijn DES, IDEA en AES.

Electronic Code Book (ECB)[bewerken]

De ECB modus is zeer snel als het gaat om encryptie/decryptie, de tekst kan in elke volgorde en parallel verwerkt worden. Een foute bit kan er echter voor zorgen dat een blok verloren gaat, bit verlies is niet te repareren.

Omdat identieke klare teksten vercijferd worden tot identieke cijferteksten ontstaan er data-patronen. De vertrouwelijkheid van de boodschap is hiermee dan ook in het geding.

ECBencryptie.jpg
Encryptie met de ECB mode

De formule voor ECB encryptie:

  • C_n = E_K(M_n)
ECBdecryptie.jpg
Decryptie met de ECB mode

De formule voor ECB decryptie:

  • M_n = D_K(C_n)

Cipher Block Chaining (CBC)[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 logische operator XOR. Ook om eventuele data-patronen te verbergen zullen dezelfde blokken klare tekst anders versleuteld worden zodat er verschillende cijfertekstblokken ontstaan bij een identieke klare tekst.

Wanneer CBC toegepast wordt zal de encryptie sequentieel geschieden. Een eenbits verandering in de cijfertekst zal bij decryptie leiden tot corruptie van 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 encryptie/decryptie van de boodschap. Qua lengte is de IV overigens vaak gelijk aan de lengte van het te vercijferen blok klare tekst.

CBCencryptie.jpg
Encryptie met de CBC mode

De formule voor CBC encryptie:

  • C_n = E_K(C_{n-1} \oplus M_n), C_0 = IV
CBCdecryptie.jpg
Decryptie met de CBC mode

De formule voor CBC decryptie:

  • M_n = C_{n-1} \oplus D_K(C_n), C_0 = IV

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

  • C_n = E_K(C_{n-1}) \oplus M_{n-1} \oplus M_n

De formule voor PCBC decryptie:

  • M_n = C_{n-1} \oplus M_{n-1} \oplus D_K(C_n)

Cipher Feedback Mode (CFB)[bewerken]

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

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

CFB encryptie.jpg
Encryptie met de CFB mode

De formule voor CFB encryptie:

  • C_n = E_K(C_{n-1}) \oplus M_n

De IV wordt dus links geplaatst in de input queu (IV = C0), na encryptie 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 dit cijfertekst deel rechts toegevoegd worden aan de input queu. Hierna kan het volgende deeltje van de klare tekst verwerkt worden, dit proces zal zich herhalen totdat alle deeltjes van de klare tekst verwerkt zijn.

CFB decryptie.jpg
Decryptie met de CFB mode

Let op bij CFB wordt bij decryptie de input queu geëncrypt en niet gedecrypt.

De formule voor CFB decryptie:

  • M_n = E_K(C_{n-1}) \oplus C_n

Output Feedback Mode (OFB)[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.

OFB encryptie.jpg
Encryptie met de OFB mode
OFB decryptie.jpg
Decryptie met de OFB mode

De formule voor OFB encryptie en decryptie:

  • C_n = M_n \oplus S_n
  • M_n = C_n \oplus S_n
  • S_n = E_K(S_{n-1})
  • S_0 = IV

Referenties[bewerken]

  1. Tanenbaum, A.S., (2002). "Computer Networks (4th Edition)". New Jersey: Prentice Hall.