Een Nederlandse beveiligingsonderzoeker heeft een tool gemaakt waarmee gepixeliseerde wachtwoorden te achterhalen zijn. Of beter gezegd, in sommige gevallen, vertelt Sipke Mellema aan Tweakers. De tool kan nog niet alles, maar heeft wel mogelijkheden voor de toekomst.
Pixeliseren komt voor wanneer iemand een stuk tekst wil verbergen, zoals een wachtwoord of andere gevoelige informatie. Dat kan op verschillende manieren, bijvoorbeeld door er een grote zwarte balk overheen te zetten of het simpelweg uit een document te knippen. Een andere populaire methode is om het te blurren door pixels uit te vergroten en over het wachtwoord heen te zetten. Sipke Mellema kwam onlangs in zijn werk als pentester een wachtwoord tegen dat met pixels was weggelakt. Dat zag hij als uitdaging, zegt hij tegen Tweakers. "Ik wilde daar een finding van maken en ben aan de slag gegaan om te kijken of ik de tekst erachter kon achterhalen."
Dat lukte: Mellema bouwde een proof-of-concept genaamd Depix en zette dat op GitHub, en hij schreef een blogpost die inmiddels veelvuldig wordt gedeeld. Wel zijn sommige gebruikers ervan misschien iets te optimistisch over de mogelijkheden, vreest Mellema. "Non-tech mensen denken dat ik een soort magic wand heb waarmee ik kan zwaaien en alle blurs kan terugtoveren naar tekst, maar Depix werkt alleen voor bepaalde verpixelingen."
Depix kan teksten dus achterhalen van achter pixels. Dat kan als het pixeliseringsalgoritme gebruikmaakt van een box filter. "Een box filter zorgt ervoor dat een afbeelding in kleine blokjes wordt opgedeeld", legt Mellema uit. "Dan worden bijvoorbeeld iedere vijf bij vijf pixels een blok. Vervolgens berekent het algoritme de gemiddelde waarde van die pixels en wordt het block weggeschreven." Die waarde kan, in sommige gevallen althans, worden gebruikt om de oorspronkelijke pixels te achterhalen.
Dat proces kan ook bijvoorbeeld bij afbeeldingen worden toegepast, maar het 'depixelen' is dan te moeilijk. Mellema: "Onder een afbeelding kan iedere willekeurige configuratie van pixels staan. Het is niet te doen om dat te achterhalen, want er zijn te veel mogelijkheden om er een waarde uit te destilleren." Maar met tekst is dat wél mogelijk, zo bedacht Mellema. Het aantal mogelijke tekens is namelijk relatief beperkt.
De Depix-tool gebruikt een vrij simpele dataset. Eigenlijk mag je het niet eens een dataset noemen; het gaat om een screenshot van een groep tekens bij elkaar. Daarop staan alle combinaties van twee tekens die je mogelijk in een wachtwoord nodig hebt, een zogenaamde De Bruijn-sequentie. Dat is volgens Mellema nodig, omdat bij het verpixelen soms pixels van twee tekens overlappen. "Je moet dus niet alleen kijken naar 'a' of 'aa', maar ook naar 'ab', 'ac' enzovoorts."
Mede daarom is Mellema's PoC nog relatief beperkt. Depix kan bijvoorbeeld maar met slechts een bepaald font overweg dat in het screenshot wordt gebruikt. "Maar je kunt het natuurlijk uitbreiden door de tool eerst een ander font te laten herkennen en vervolgens dat te 'ontpixelen'. Op dezelfde manier moet de tool dan ook kunnen omgaan met saturation en helderheid." Het probleem is dat de Python-libraries die hij gebruikte niet goed genoeg overweg konden met verschillende fonts en saturation. "Maar ik denk dat als iemand daar tijd in steekt dat het veel beter kan worden."
Depix is toegespitst op één specifiek pixeliseringsalgoritme. Mellema keek naar Greenshot, een opensource Windows-tool voor het maken van screenshots waar een dergelijke functie zit ingebouwd. "Er zijn heel veel verschillende blur-opties, bijvoorbeeld in Gimp of Photoshop. Ik heb gebruik gemaakt van het algoritme dat Greenshot gebruikt. Daarna heb ik ook gekeken naar Gimp, dat opensource is. Dat lijkt ook een box filter te gebruiken, maar dat heeft net een iets andere implementatie. Mijn tool kijkt daarnaast ook niet naar alpha-channels naast rgb's, wat sommige blur-tools wel gebruiken." Wel denkt Mellema dat de tool gemakkelijk kan worden uitgebreid door ook dergelijke andere algoritmes toe te voegen.
Perfect is Depix dus nog niet. Er komen nog regelmatig vals-positieven uit en het heeft een beperkte capaciteit. Maar Mellema zegt wel dat er veel potentie in zit. "Je kunt er nog allemaal vette dingen mee doen, bijvoorbeeld automatische font- of patroonherkenning, het genereren van de De Bruijn-sequentie voor snelheid en eventueel zelfs machine learning voor het filteren van vals-positieven." Ondertussen ben je waarschijnlijk het beste af om wachtwoorden achter een zwarte streep te zetten als je die toch in presentaties wil tonen. Voor de zekerheid.