Ik deed een poging om het Heartbleed-beveiligingslek uit te leggen, maar inmiddels heeft NRC het ook al gedaan. Maar och, uitleggen is leuk, dan hoef ik tenminste geen advies meer te geven over wachtwoorden veranderen.
Eigenlijk is een server die websites in de lucht houdt gewoon een computer, net als jouw computer, alleen dan in een andere kast. Ook die computer heeft een harde schijf en een RAM-geheugen. De computer gebruikt dat laatste om tijdens berekeningen dingen te onthouden. Het is net als met de hand twee grote getallen optellen: je zet ze onder elkaar, telt steeds twee getallen en eens in de zoveel tijd moet je er één onthouden. Het werkgeheugen is niet alleen één onthouden, maar ook het onder elkaar zetten.
Zie het geheugen van je computer als hokjes. Als ik aan de computer vraag wat er in hokje 1 zit, weet de computer dat die drie vakjes groot is en krijg ik abc
terug. Als ik om 3 vraag krijg ik d
en als ik om 7 vraag krijg ik lmno
.
1 2 3 4 5 6 7 8 9
[abc][c][d][efgh][i][jk][lmno][pq][r]
Als een server een wachtwoord binnen krijgt zet hij het in zijn werkgeheugen. Hij maakt wat berekeningen: hij verhaspelt het wachtwoord en vergelijkt het verhaspelde wachtwoord met het verhaspelde wachtwoord dat op de harde schijf staat. Omdat hij steeds op dezelfde manier alle tekens door elkaar gooit en verandert, weet hij dat als beide gelijk zijn, het wachtwoord ook gelijk was. Het punt is: tijdens al deze berekeningen staat je wachtwoord staat dus even (of, als de computer niet opruimt, langer) onverhaspeld in het werkgeheugen, gewoon leesbaar, maar och, in principe kan niemand daar bij.
En dan het lek: bij Heartbleed is het door een bug mogelijk om te vragen om een hokje en te doen alsof het groter is dan het eigenlijk is. Als je de computer fopt en zegt dat je hokje 3 wil, en dat het 4 vakjes groot is, krijg je defg
. Als e
mijn gebruikersnaam was, en f
mijn wachtwoord, komt dat nu dus gewoon naar buiten. Maar misschien ook niet, misschien was het het stukje tekst van de voorpagina of een een lijst met landen van de wereld. Of het is het halve wachtwoord van iemand anders.
Het is dus een beetje touwtje trekken op de kermis: altijd prijs, altijd wat gewonnen, maar in de meeste gevallen is het iets waar je eigenlijk niets mee kan. Maar toch, als je oneindig mag trekken, wie weet krijg je die beer dan wel.