Redundantie (cryptografie)

cryptografie
Dit artikel gaat over redundantie in de cryptografie. Zie Redundantie voor het algemene begrip.

Het principe van redundantie houdt in dat een ontvanger een bericht kan controleren op correctheid simpelweg door er naar te kijken. Dit is alleen mogelijk als het originele bericht extra informatie, de redundante informatie, bevat, die verder niet nodig is om het originele bericht te begrijpen.

In de cryptografie biedt aanwezige redundantie een derde partij meer kans om een versleuteld bericht te ontcijferen.

Verdieping bewerken

Alle cryptografische toepassingen kennen twee verschillende fases

  • encryptie, het versleutelen van een bericht en
  • decryptie, het ontsleutelen van het bericht.

Aan beide fases is een functie gekoppeld met een invoer en een uitvoer. Bij de encryptie-functie wordt de invoer als klare tekst in de uitvoer als cijfertekst omgezet, bij de decryptie gaat dit net andersom.

Iedere mogelijke invoer kan worden versleuteld, zelfs een bericht dat al een keer is versleuteld, in dit geval krijg je meer lagen van encryptie. Dat is bij het ontsleutelen niet de bedoeling, want hierbij mag de invoer alleen een versleuteld bericht zijn. Het ontsleutelen gaat in de tegengestelde volgorde als het versleutelen. In het geval dat de invoer geen versleuteld bericht kan zijn wordt dat meestal zo als uitvoer aangegeven.

De ontvanger moet dus correct versleutelde berichten van de rest kunnen onderscheiden. Zonder deze redundantietest zou alle mogelijke uitvoer die wordt ontsleuteld als aannemelijk worden gezien. Voor de meeste cryptografische toepassingen is dit onacceptabel. De redundantietest is alleen mogelijk als de klare tekst extra informatie, zogenaamde redundante informatie, bevat.

Implementatie bewerken

Een heel simpele vorm van redundantie is het toevoegen van een vaste tekenreeks aan het eind van het originele bericht. Bijvoorbeeld "over-en-sluiten". Als de ontvanger na het ontsleutelen deze tekenreeks niet op het eind van het bericht ziet staan, weet hij dat hij geen correct versleuteld bericht heeft ontvangen.

Een meer complexere, maar in de praktijk veel gebruikte vorm van redundantie is het toevoegen van een hash aan de klare tekst. Deze hash is de uitkomst van een functie waarvan de invoer de klare tekst is.

De redundantietest wordt als volgt gedaan: Nadat de ontvanger het bericht ontsleuteld heeft scheidt hij de hash van het originele bericht. Vervolgens berekent hij zelf de hash van de klare tekst. Als beide hashes dezelfde waarde hebben is de redundantietest gelukt en weet de ontvanger dat hij een correct versleuteld bericht heeft ontvangen en ontsleuteld.

Nadelen bewerken

Het principe van redundantie maakt het gemakkelijker voor derde partijen om het systeem te kraken, zoals toegelicht in het volgende voorbeeld.

Beschouw de bovengenoemde eerste implementatie, waar redundantie wordt gerealiseerd door elk bericht te eindigen met een vaste algemeen bekende tekenreeks. We gaan uit van de situatie dat het gebruikte cryptografische systeem openbaar bekend is en met een sleutel werkt.

Alice verstuurt een bericht naar Bob. Zij eindigt haar bericht met "over-en-sluiten", versleutelt het bericht met haar sleutel en stuurt het vervolgens naar Bob. Trudy onderschept dit bericht, maar kent de sleutel niet. Ze weet echter wel dat de klare tekst met "over-en-sluiten" eindigt en ze schrijft een programma dat het bericht probeert te ontcijferen met alle mogelijke verschillende sleutels. Na elke poging controleert het programma of de uitvoer eindigt met "over-en-sluiten".

Deze zogenaamde brute force methode zou zonder redundantie niet werken, want de laatste stap waar de uitvoer wordt getest tegen de redundante informatie vervalt dan. Iedere keer dat er is geprobeerd het bericht te ontcijferen is de even aannemelijk. Het principe van redundantie geeft aanvallers dus de mogelijkheid om iedere keer dat een mogelijke ontcijfering is geproduceerd die op validiteit te testen. Op deze wijze kunnen aanvallers door brute de klare tekst dus sneller achterhalen.