De Nederlandse cryptanalist Marc Stevens en het beveiligingsteam van Google zijn erin geslaagd een succesvolle collision-aanval op het sha-1-hashingalgoritme uit te voeren. De aanval toont aan dat sha-1 in de praktijk niet meer veilig is en zo snel mogelijk uitgefaseerd moet worden.
Dat sha-1 niet meer voldoet voor verificatie en ondertekening was al bekend, maar tot nu toe ging het om theoretische of gedeeltelijke aanvallen. De drijvende kracht daarachter was Marc Stevens van het Centrum Wiskunde & Informatica, of CWI, die zijn eerdere werk nu heeft gebruikt bij de eerste volledige collisionaanval op sha-1, die hij Shattered heeft genoemd.
Stevens toont zich tegenover Tweakers verheugd. "Ik ben al zeker zeven jaar bezig om tot een zo praktisch mogelijke aanval te komen. Ik denk dat het gelukt is om een methode te ontwikkelen met een zo laag mogelijke complexiteit en door gebruik te maken van zeer geavanceerde cryptanalyse. Het is mooi om dat nu in de praktijk te zien." Naast Stevens waren Pierre Karpman van het CWI en Googles Security, Privacy and Anti-Abuse-team bij de aanval betrokken. Op de site Shattered.io geven ze details over de aanval.
Met de methode slaagden ze erin identieke sha-vingerafdrukken te maken op basis van twee verschillende pdf-documenten, iets wat niet mag gebeuren bij hashingalgoritmes die ingezet worden voor beveiliging. Die beveiliging berust er juist op dat bepaalde invoer tot een enkele specifieke uitvoer, de hash, leidt. Die koppeling wordt gebruikt om bijvoorbeeld te verifiëren dat een contract ook echt het authentieke document is zoals partijen dat hebben afgesloten. Door de aanval van Stevens vervalt de garantie die de sha1-hash moet bieden; de hash kan nu ook de uitvoer zijn van een ander contract met bijvoorbeeld andere bedragen.
Stevens brengt een pdf-generator uit die gebruikmaakt van zijn collisionaanval om iedereen de mogelijkheid te geven nep-pdf's met identieke hashes te maken. Die generator brengt hij over 90 dagen uit om partijen de mogelijkheid te geven sha-1 in de komende tijd uit te faseren. Bang voor misbruik is Stevens niet. "Het toont vooral iets aan. Bovendien publiceren we een tool waarmee op misbruik met nep-pdf's te controleren is. Als er twijfel is over de authenticiteit, kunnen mensen documenten daarmee scannen." De werking van die tool is gebaseerd op Stevens' eerdere onderzoek naar de detectie van bestanden die met een collisionaanval gegenereerd zijn. Google integreert die tool in Gmail en Drive ter bescherming tegen misbruik.
De impact ligt volgens de CWI-onderzoeker veel meer bij software. "Git is bijvoorbeeld compleet gebaseerd op sha-1 voor het identificeren van file-objecten, revisies en data-integriteit. Hierbij is de collisionaanval ook makkelijker uit te voeren. Voor de pdf's moesten we allerlei trucs uithalen", zegt Stevens. De onveiligheid betreft nu ook vooral digitale handtekeningen; misbruik voor certificaten is minder voor de hand liggend. "Maar we hopen dat het de hele industrie nu duidelijk wordt dat sha-1 gedateerd is."
Om zijn aanval in de praktijk te brengen kreeg Stevens de helpende hand van Google. "Ze benaderden me met de melding dat ze het belangrijk vinden om aan te tonen dat sha-1 onveilig is. De hulp van Google bestond onder andere uit het beschikbaar stellen van rekenkracht van de datacenters. Volgens Elie Bursztein van Googles anti-abuse-onderzoeksteam kostte het 9.223.372.036.854.775.808 sha-1-verwerkingen om de botsing te vinden.
Volgens Stevens verliep het project in twee fasen. "De eerste was simpel en voerden we uit op cpu's van de honderdduizenden computers van Google. Een enkele cpu zou daar 6500 jaar over gedaan hebben. De tweede fase was complexer, maar deden we op de gpu-architectuur waar ook AlphaGo van DeepMind op draait. Een enkele gpu zou honderd jaar doen over die fase, terwijl die zes keer zo moeilijk was als de eerste. In de praktijk duurde het met de infrastructuur van Google acht dagen."
De geslaagde aanval komt op een moment dat de markt nog in de transitie van sha-1 naar sha-2 en sha-3 zit. Sha-1 stamt uit 1995 en is een 160bit-hashfunctie. Onderdeel van de sha-2-familie zijn onder andere sha-256 en sha-512. Sha-2 en sha-3 bevatten significante verbeteringen waardoor die standaarden nog aanzienlijke tijd meekunnen.
Het probleem is dat sha-1 nog altijd veel gebruikt wordt voor het ondertekenen van software en voor de verificatie van de ssl/tls-beveiliging van onder andere online transacties en inlogverbindingen. Wel zijn browsers als Chrome, Edge en Firefox er inmiddels toe overgegaan waarschuwingen te tonen bij het openen van https-verbindingen die beveiligd zijn met een sha-1-certificaat. Het CA-browserforum heeft bepaald dat in 2017 geen sha-1-certificaten meer uitgegeven mogen worden.