Hallo allemaal,

Je hebt softwareprogramma's waarmee je belangrijke documenten kunt beveiligen middels encryptie. Vaak kun je dan zelf een algoritme kiezen. Nu vraag ik me af wat het eigenlijk uitmaakt of je dan voor AES128 of AES256 kiest. Op het moment dat iemand je wachtwoord gaat bruteforcen dan doet dat er eigenlijk toch helemaal niks toe?

Stel mijn wachtwoord is "appel". Dan zou je zowel het met AES128 als het met AES256 ge-encrypte bestand toch even snel kunnen kraken? Waar zit 'm die extra beveiliging dan eigenlijk in?
Het gaat niet zozeer om brute force attacks, maar juist om alle attacks die géén brute force gebruiken.

In theorie is AES128 eenvoudiger te kraken dan AES256. De sleutel is kleiner, er worden minder encryptierondes gebruikt, etc. Dat zou het eenvoudiger kunnen maken om van een gecrypt wachtwoord de set met mogelijke inputs te beperken. Ook is de kans dat twee verschillende inputs dezelfde output geven (collision) veel kleiner.

Overigens heeft AES256 ook bij brute force attacks nog wel nut, want er is meer rekenwerk voor nodig om een wachtwoord te versleutelen, en dus zal de attack langer duren. We praten hier overigens over nog geen microseconde per wachtwoord, maar met de hoeveelheid data die je moet encrypten telt dat best lekker aan.
Willem, thanks ... ik begrijp er alleen totaal niks van :-s

Stel ik gebruik als wachtwoord "appel", wordt "appel" dan als sleutel gebruikt? Dus stel we hebben een versleuteld bestand en ik laat daar het woord "appel" op los, krijg ik dan het origineel weer terug?
Oeps, ik zat even langs je heen te praten; had te snel gelezen en daardoor mijn antwoord gebaseerd op hashing van passwords. Maar het principe is vergelijkbaar.

Als je 'appel' als wachtwoord gebruikt, zal dat inderdaad worden gebruikt om het encryptie-mechanisme te initialiseren. Als je hetzelfde (oorspronkelijke) bestand nogmaals encrypt met een ander wachtwoord, zul je ook een andere gecrypte versie krijgen. Hoe AES precies werkt weet ik niet, maar het lijkt me aannemelijk dat de gebruikte key (128 dan wel 256 bits) een directe afgeleide is van het ingevoerde wachtwoord. Oftewel: je wachtwoord wordt vermangeld tot een nieuw 'wachtwoord' van 16 of 32 bytes waarmee het bestand gecrypt wordt.

AES is symmetrisch; dat betekent dat je hetzelfde wachtwoord ook weer moet gebruiken bij het decrypten. Op basis van het ingevoerde wachtwoord wordt het decryptie-mechanisme geïnitialiseerd en daardoor kan het gecrypte bestand worden teruggerekend naar het origineel. Voer je het verkeerde wachtwoord in dan zal het ook worden teruggerekend, maar lijkt het gedecrypte bestand in niets op wat het zou moeten zijn. ;-)
>> Oeps, ik zat even langs je heen te praten;

Geen probleem :)

Maar dan kom ik weer even terug op mijn vraag ... wat is nu het verschil of ik een bestand met AES128 of AES256 encrypt, als ik in beide gevallen als wachtwoord "appel" gebruik. Hoe biedt AES256 dan meer beveiliging vraag ik me af? Dus stel een hacker komt het ge-encrpyte bestand tegen ... waarom is het AES256 bestand dan moeilijker te kraken?
> waarom is het AES256 bestand dan moeilijker te kraken?

Ten eerste omdat de key langer is, ten tweede omdat er meer encryptierondes plaatsvinden.

De data wordt opgedeeld in blokken. Op die blokken worden rekentruukjes losgelaten. Verschillende achter elkaar, en dat wordt dan een aantal keer herhaald. AES128 maakt gebruik van 10 rondes, en AES256 gebruikt er 14. Elke ronde bestaat uit truukjes als bijvoorbeeld het vervangen van een byte door een andere byte volgens een lookup table, het shiften/roteren van bits in een byte, en het omwisselen van bytes.

Door al deze truuks treedt divergentie van je output op. Oftewel: als je 1 bit in de input wijzigt, dan zal je output er heel anders uit komen te zien. Elke encryptieronde zal de output nog een beetje meer wijzigen. Bij AES256 is door de langere key en de extra rondes de divergentie dus groter dan bij AES128, en daardoor is het nóg moeilijker om patronen in de output te ontdekken.

[size=xsmall]Toevoeging op 18/09/2015 01:57:48:[/size]

Om nog even terug te komen op het brute forcen waar je het in je eerste post over had:

Brute force attacks zijn voornamelijk nuttig bij wachtwoorden, omdat je dat eenvoudig kunt automatiseren. Je neemt een aantal woorden, encrypt die, en vergelijkt ze met de gecrypte versie. Isse ziempel.

In dit geval, bij gecrypte bestanden, is brute force veel minder werkbaar. Je moet namelijk voor elk wachtwoord dat je wilt proberen het bestand volledig decrypten en daarna beoordelen of het resultaat iets is wat op een normaal bestand lijkt. Met een beetje pech is die laatste stap handwerk. Dat ben je snel zat. ;-)
Ah oke, thanks ... als ik het dus eigenlijk goed begrijp ziet het AES256 bestand er "ingewikkelder" uit aan de buitenkant?

>> In dit geval, bij gecrypte bestanden, is brute force veel minder werkbaar.

Oké ... maar hoe wordt dan normaliter een ge-encrypt bestand gedecrypt? Dus stel ik encrypt een bestand met AES128 en gebruik als wachtwoord "appel". Een hacker krijgt mijn bestand te pakken en wil het gaan decrypten. Wat gaat hij dan met dat bestand doen?
>> Een hacker krijgt mijn bestand te pakken en wil het gaan decrypten. Wat gaat hij dan met dat bestand doen?

Hij zal eerst proberen te achterhalen welk encryptiealgoritme je hebt gebruikt.

Vervolgens kan hij een tool aan het werk zetten die veelgebruikte wachtwoorden, voornamen en woorden uit woordenboeken uitprobeert. Daarom nooit een bestaand woord zoals "appel" gebruiken als wachtwoord.

Tot slot zal hij random strings uitproberen.

Als je er maar genoeg rekenkracht tegenaan gooit, is je wachtwoord altijd te achterhalen. Vraag is meer of de hacker die investering kan en wil betalen: waarschijnlijk is alleen al de stroomrekening van het rekencentrum hoger dan wat een gekraakt Ozzie-bestand opbrengt.

AES werkt overigens zo:

[youtube]liKXtikP9F0[/youtube]
Dankjewel voor het interessante filmpje Ward! Dat geeft een beetje een idee inderdaad. Wel vrij complex allemaal, maar ik snap de achterliggende opzet/gedachte.

>> Vervolgens kan hij een tool aan het werk zetten die veelgebruikte wachtwoorden, voornamen en woorden uit woordenboeken uitprobeert. Daarom nooit een bestaand woord zoals "appel" gebruiken als wachtwoord.

Oké ... maar dit is dus gewoon bruteforcen toch? Hoe ik Willem begrijp is dat niet echt gebruikelijk om te bruteforcen op een ge-encrpyt bestand. Dus de vraag is ... hoe doen ze het dan? Via een wiskundig patroon? Dat lijkt me lastig, want dan zul je toch altijd de masterkey moeten hebben lijkt me.
Voorzover ik weet, wordt AES inderdaad meestal gekraakt met een word list aka password list zoals darkc0de.
Oke, dan is het dus een kwestie van een "veilig" password gebruiken. Heb jij trouwens een idee vanaf hoeveel tekens een password veilig (genoeg) is? Vroeger werd gezegd dat een password minimaal 8 tekens moet zijn, maar is dat nu nog steeds zo?

Reageren