Skip to main content

Brute Force

Als het goed is hebben we nu een encryptie algoritme. Het algoritme verschuifd de letters x posities. Als je voorbij de Z komt dan begin het weer bij de A. Dus als je de X 5 posities verschuifd dan reulteert dat in een C. Tel maar na.

Dit betekent ook dat als je 26 posities vershuifd je weer terug komt bij dezelfde letter.  Of als je 27 cijfers verschuifd is dat hetzelfde als 1 letter vershuiven,

Stel we hebben de volgende tekst:

HTP HPPE HLE STPC DELLE RPDNSCPGPY

Je weet deze boodschap is gemaakt met het 'verschuif-algoritme'. Je weet alleen de sleutel niet. Hoeveel sleutels zijn er ook alweer? Slecht 25, want bij 26 kom je weer uit op originele boodschap en 27 is hetzelfde als 1.

Dus maak nu een loop waarin je alle sleutels probeert. Decodeer de bovenstaande boodschap door alle mogelijke sleutels te proberen.

Wat was de originele boodschap?

Welke sleutel is gebruikt?

Je ziet dat je door alle sleutels te proberen heel snel de orginele boodschap vindt. Dit proberen van alle sleutels heet brute force, brute kracht. Gewoon alles proberen. Bij 25 sleutels lukt dat vrij makkelijk maar als we de sleutels groter maken dan wordt brute force steeds moeilijker.

Symmetrische encryptie

In dit voorbeeld gebruikte we hetzelfde algoritme en eigenlijk ook dezelfde sleutel om een boodschap te encytpen (te versleutelen) en om een boodschap te de-crypten (te ontcijferen). Eigenlijk was het niet helemaal dezelfde sleutel want als we met +1 hadden encrypt dan hadden we -1 of 25 nodig om de decrypten. Maar eigenlijk horen 1 en -1 bij elkaar. Het is immers dezelde sleutel met een ander teken. Als we bij encrypten en decrypten dezelde sleutel gebruiken dan hebben we het over een symmetrische encryptie. Zodra je de sleutel weet dan kan je de code kraken. Dit is anders bij asymmetrische encryptie.

Het voordeel van symmetrische encryptie is dat het lekker snel is om te encrypten en te decrypten. Het nadeel is echter dat als je de sleutel eenmaal weet, dat je dan alle boodschappen kunt ontcijferen.

Asymmetrische encryptie

Bij asymmetrische encryptie is dit anders. Het is werkt wat ingewikkelder en is daardoor wat trager, maar als je de sleutel onderschept, kun je de boodschappen nog niet ontcijferen.

Sleutelgrootte

Omdat we in ons algoritme maar 26 letters hadden, hadden we een keuze uit 1..25 voor de sleutel. Als we hoofd en kleine elttes samen nemen dan zouden we wel wat mer sleutels hebben, maar het schiet nog niet op.

Het schiet wel op als we twee karakters als één teken zien. We gaan dus eignelijk twee karakters omzetten in een nummer. We gebruiken dan geen ASCII tabel meer maar maken onze eigen tabel. AA=0, AB=1, AC=2,.....BA=27, BB= 28, etc. Op deze menier hebben we 676 mogelijke combinaties. Di is 26x26. Als we een groepje van drie karakters nemen dan hebben we al 17576 mogelijke combinaties en dit nummer groeit snel. Als we een groepje van 8 karakters nemen dan hebben we 208 miljard mogelijkehden voor een sleutel, Als we alle sleutels zouden wilen proberen en we kunnen er 1000 per seconden testen dan zouden we ruim in het selchtse geval 6.5 jaar bezig zijn om de sleutel te vinden.

Vraag: waarom 'in het slechtse geval' zal het 6.5 jaar duren, kan het ook minder lang duren?

Toch is deze methode van letters verschuiven zelfs als we het groepjes doen, niet heel goed.

Ten eerste mote de sleutel heel geod geheim gehouden worden en dat terwijl je hem in eerste instantie wel moet delen. Je zult de sleutel dus een keer moeten opsturen.

Ten tweede kun je met behulp van statistieken voorspellen. Je weet bijvoorbeeld dat de letter e veel vaker voorkomt dan de q. Met die gegevens kun je veel gerichter op zoek gaan naar de sleutel. Zeker als je veel verdleutelde data hebt.

Later gaan we nog eens kijknen naar andere vormen van encryptie. Nu gaan we eerst eens terug nar ons STRIDE model.