Het langverwachte einde van SHA1

Stagiair | 23 maart 2017

Door Erwin Lenting | 23 maart 2017

Op 23 februari 2017 hebben het CWI Amsterdam en Google Research eindelijk de tekortkomingen van SHA1 bewezen door het publiceren van de paper The first collision for full SHA-1. Maar wat is SHA1 eigenlijk en wat betekent het dat de tekortkomingen eindelijk zijn bewezen?

What is SHA1?

SHA1 is de herziene versie van SHA(-0) dat staat voor de tweede versie van de Secure Hash Algoritm. SHA1 is een hashing algoritme dat ontworpen is door de Amerikaanse National Security Agency en is al in 1995 gepubliceerd. Een hashing algoritme kan op basis van een bestand of bericht een hash waarde genereren. Een hash is een reeks karakters waarbij er, afhankelijk van de implementatie van het hashing algoritme, een grote kans is dat de hash uniek is.

Gebruik van SHA1

Een voorbeeld waarbij SHA1 veel werd gebruikt, is bij het inloggen in een website. Van het wachtwoord wordt bij aanmaak een hash gegenereerd. Elk keer dat een gebruiker daarna inlogt wordt er weer een hash gegenereerd van het ingevulde wachtwoord en deze wordt vergeleken met de hash die bij het aanmaken van het wachtwoord is opgeslagen. Wanneer de hashes overeenkomen, komen de wachtwoorden ook overeen en mag de gebruiker toegang krijgen. Het gebruik van SHA1 voor het hashen van wachtwoorden wordt al sinds jaren afgeraden. Met moderne technieken is het een kwestie van soms enkele minuten om aan de hand van de SHA1 hash het achterliggende wachtwoord te achterhalen.

Omdat de hashingtechniek van SHA1 bekend is, is het mogelijk om van elk mogelijk wachtwoord een hash te genereren en deze in een tabel op te slaan, ook wel een ‘look-up’ tabel genoemd. Een look-up tabel maakt het achterhalen van de wachtwoorden aan de hand van de hash een koud kunstje. Het enige wat er maar gedaan hoeft te worden is de hash opzoeken in de tabel en vervolgens heb je de reeks karakters die tot de hash heeft geleid. Om het gemak van een look-up tabel tegen te gaan, worden wachtwoorden tegenwoordig vaak gehasht met een salt. Een salt is een reeks willekeurige karakters die samen met het wachtwoord worden gehasht. Door de salt te laten verschillen per gebruiker en per wachtwoord, wordt het maken van een look-up tabel onbegonnen werk. SHA1 heeft bij veel websites inmiddels plaatsgemaakt voor betere hashing algoritmes.

Verder wordt SHA1 nog wel erg vaak gebruikt om te controleren of een bestand dat je hebt ontvangen ook echt het originele bestand is. Deze controle is mogelijk als de verzender van het bestand een zogenaamde checksum, synoniem aan een hash, genereert van het bestand voordat het bestand wordt verzonden. Deze checksum wordt apart meegestuurd, zodat de ontvanger deze vervolgens kan vergelijken met een zelf genereerde checksum van het binnengehaalde bestand. Wanneer de beide checksums overeenkomen, kan er met zekerheid gezegd worden dat het gedownloade bestand ook echt het originele bestand is. Of in het geval van SHA1: kon er met zekerheid gezegd worden dat het gedownloade bestand ook echt het originele bestand is.

Het officiele einde van SHA1

Maar waarom moet SHA1 niet meer gebruikt worden als het direct achterhalen van een wachtwoord aan de hand van de hash onbegonnen werk is? Waarom kan er met SHA1 nu niet meer met zekerheid gezegd worden dat een ontvangen bestand ook echt het originele bestand is? Dat komt doordat er onlangs een zogenaamde ‘collision’ is gevonden met betrekking tot SHA1. Een collision is een situatie waar twee verschillende bestanden of berichten leiden tot dezelfde hash. Met het vinden van deze collision is het aangetoond dat het gebruik van SHA1 niet altijd hoeft te leiden tot een unieke hash. Het vinden van een collision opent daarom de deur naar situaties waar originele bestanden aangepast kunnen worden zonder dat daardoor de hash verandert. Dat is op dit moment nog een theoretische situatie, maar het gebruik van SHA1 kan in ieder geval niet meer de zekerheid bieden dat een gebruiker te maken heeft met het originele bestand of bericht.

 

 

De collision is gevonden door de Nederlander Marc Stevens van het CWI in samenwerking met Pierre Karpman en het beveiligingsteam van Google. De collision aanval is uitgevoerd in twee fasen, waarbij er voor de eerste fase gebruik is gemaakt van een CPU-cluster van Google dat verspreid was over acht verschillende locaties. De tweede fase was aanmerkelijk complexer en voor die fase is daarom gebruikgemaakt van het GPU-cluster van Google waar ook software van DeepMind op draait. DeepMind is een zusterbedrijf van Google, gespecialiseerd in kunstmatige intelligentie en bekend van het programma AlphaGo dat wereldkampioenen van het bordspel Go heeft verslagen. Een enkele GPU zou honderd jaar doen over het vinden van een collision in de tweede fase, maar de GPU-cluster had er slechts acht dagen voor nodig. In die twee fasen zijn er twee verschillende PDF-bestanden gevonden welke uiteindelijk leiden tot exact dezelfde hash.

Wat nu?

Hoewel er al jaren geleden theorieën zijn gepubliceerd die methoden beschrijven hoe een collision gevonden kan worden bij SHA1, zou het tot nu toe te veel tijd en geld kosten om de aanval daadwerkelijk uit te voeren. Het einde van SHA1 is ruim tien jaar geleden al aangekondigd, maar heeft daarom tot dit jaar op zich laten wachten. SHA1 werd dan ook nog steeds gebruikt voor het versiebeheersysteem Git, back-up systemen en voor het certificeren van SSL-certificaten.

Sinds het begin van dit jaar geven bekende browsers als Firefox, Chrome, Edge, Safari en Opera al wel een waarschuwing wanneer een gebruiker een website opent dat nog een SSL-certifcaat op basis van SHA1 gebruikt. Overige systemen hebben nog maar zo’n twee maanden de tijd om de overstap te maken naar betere hashing algoritmes zoals SHA256 en SHA3, voordat de broncode waarmee de collision is gevonden openbaar wordt gemaakt.

Tot slot

Het einde van SHA1 betekent het einde van een tijdperk. SHA1 bestaat inmiddels ruim 20 jaar en dat een standaard als SHA1 het ruim 20 jaar lang heeft weten vol te houden is dan ook een compliment voor de ontwerpers van SHA1. 20 jaar geleden stond het internet nog in de kinderschoenen en is het een komen en gaan geweest van diverse standaarden. Het is nu de vraag welke hashing standaard de uitdaging aan gaat om de ICT-wereld weer een stukje veiliger te maken en of die standaard de ruim 20 jaar van SHA1 weet te overtreffen. De toekomst zal het leren!

even overleggen?

050 588 54 50 info@byyoursite.nl
Westerhaven 13-1 || 9718 AW Groningen

info@byyoursite.nl | 050 588 54 50