Wat is er veranderd? SHA-1 aanvalsaanvallen, verklaard
Op de eerste dag van 2016 beëindigde Mozilla de ondersteuning voor een verzwakte beveiligingstechnologie genaamd SHA-1 in de webbrowser Firefox. Vrijwel onmiddellijk hebben ze hun beslissing teruggedraaid, omdat het de toegang tot sommige oudere websites zou beperken. Maar in februari 2017 is hun angst eindelijk uitgekomen: onderzoekers hebben SHA-1 verbroken door de eerste echte botsingaanval te maken. Dit is wat dat allemaal betekent.
Wat is SHA-1?
De SHA in SHA-1 staat voor Veilig hash-algoritme, en simpel gezegd, je kunt het zien als een soort wiskundeprobleem of -methode versleutelt de gegevens die erin worden geplaatst. Het is ontwikkeld door de NSA van de Verenigde Staten en vormt een belangrijk onderdeel van veel technologieën die worden gebruikt om belangrijke transmissies op internet te coderen. Veel voorkomende coderingsmethoden SSL en TLS, waarvan u misschien hebt gehoord, kunnen een hash-functie zoals SHA-1 gebruiken om de ondertekende certificaten te maken die u in uw browserwerkbalk ziet.
We gaan niet diep in op de wiskundige en computerwetenschap van een van de SHA-functies, maar hier is het basisidee. Een "hash" is een unieke code op basis van de invoer van gegevens. Zelfs kleine, willekeurige reeks letters ingevoerd in een hashfunctie zoals SHA-1 retourneert een lang, ingesteld aantal tekens, waardoor het (mogelijk) onmogelijk wordt om de tekenreeks terug te zetten naar de oorspronkelijke gegevens. Dit is hoe wachtwoordopslag gewoonlijk werkt. Wanneer u een wachtwoord maakt, wordt uw wachtwoordinvoer verhaspeld en opgeslagen door de server. Bij uw terugkeer, wanneer u uw wachtwoord intypt, wordt het opnieuw gehasht. Als het overeenkomt met de oorspronkelijke hash, kan worden aangenomen dat de invoer hetzelfde is en krijgt u toegang tot uw gegevens.
Hash-functies zijn vooral nuttig omdat ze het gemakkelijk maken te bepalen of de invoer, bijvoorbeeld een bestand of een wachtwoord, is gewijzigd. Wanneer de invoergegevens geheim zijn, zoals een wachtwoord, is de hash bijna onmogelijk om terug te draaien en de originele gegevens te herstellen (ook wel de "sleutel" genoemd). Dit is een beetje anders dan "codering", waarvan het doel is om gegevens te versleutelen met als doel het later te ontcijferen met behulp van coderingen en geheime sleutels. Hashes zijn gewoon bedoeld om de integriteit van de gegevens te waarborgen - om ervoor te zorgen dat alles hetzelfde is. Git, de versiebeheer- en distributiesoftware voor open source code, gebruikt om deze reden SHA-1 hashes.
Dat is veel technische informatie, maar om het simpel te zeggen: een hash is niet hetzelfde als encryptie het wordt gebruikt om te identificeren of een bestand is gewijzigd.
Hoe beïnvloedt deze technologie me?
Laten we zeggen dat je een website privé moet bezoeken. Uw bank, uw e-mailadres en zelfs uw Facebook-account gebruiken allemaal codering om de gegevens die u privé stuurt te houden. Een professionele website biedt versleuteling door het verkrijgen van een certificaat van een vertrouwde autoriteit-een externe partij, vertrouwd om ervoor te zorgen dat de codering op het niveau staat, privé is tussen de website en gebruiker en niet bespied door een andere partij. Deze relatie met de derde partij, genaamd Certificaatautoriteiten, of CA, is cruciaal, omdat elke gebruiker een "zelfondertekend" certificaat kan maken - je kunt het zelfs zelf doen op een machine waarop Linux wordt uitgevoerd met Open SSL. Symantec en Digicert zijn bijvoorbeeld twee bekende CA-bedrijven.
Laten we een theoretisch scenario doorlopen: How-To Geek wil de sessies van gebruikers privé houden met codering, dus het petities een CA zoals Symantec met een Verzoek om ondertekening van het certificaat, of CSR. Ze creëren een publieke sleutel en prive sleutel voor het coderen en decoderen van gegevens die via internet worden verzonden. Het CSR-verzoek verzendt de openbare sleutel naar Symantec samen met informatie over de website. Symantec controleert de sleutel tegen zijn record om te controleren of de gegevens ongewijzigd blijven door alle partijen, omdat elke kleine wijziging in de gegevens de hash radicaal anders maakt.
Die openbare sleutels en digitale certificaten worden ondertekend door hash-functies, omdat de uitvoer van deze functies gemakkelijk te zien is. Een openbare sleutel en een certificaat met een geverifieerde hash van Symantec (in ons voorbeeld), een autoriteit, verzekert een gebruiker van How-To Geek dat de sleutel ongewijzigd is en niet door iemand kwaadwillend wordt verzonden.
Omdat de hash gemakkelijk te controleren en onmogelijk is (sommigen zeggen "moeilijk") om te keren, betekent de juiste, geverifieerde hash-handtekening dat het certificaat en de verbinding kunnen worden vertrouwd en dat gegevens kunnen worden goedgekeurd om gecodeerd van begin tot eind te worden verzonden . Maar wat als de hash was niet echt uniek?
Wat is een aanvalsaanval en is het mogelijk in de echte wereld?
Misschien heb je wel eens gehoord van het 'verjaardagsprobleem' in de wiskunde, hoewel je misschien niet wist hoe het werd genoemd. Het basisidee is dat als je een voldoende grote groep mensen verzamelt, de kansen behoorlijk hoog zijn dat twee of meer mensen dezelfde verjaardag hebben. Hoger dan je in feite zou verwachten - genoeg dat het een raar toeval lijkt. In een groep van slechts 23 mensen is er 50% kans dat twee een verjaardag delen.
Dit is de inherente zwakte in alle hashes, inclusief SHA-1. Theoretisch zou de SHA-functie een unieke hash moeten creëren voor alle gegevens die erin worden geplaatst, maar naarmate het aantal hashes groeit, is de kans groter dat verschillende gegevensparen dezelfde hash kunnen creëren. U kunt dus een niet-vertrouwd certificaat met een identieke hash maken voor een vertrouwd certificaat. Als ze u zover krijgen dat niet-vertrouwde certificaat te installeren, kan dit zich voordoen als vertrouwd en schadelijke gegevens verspreiden.
Het vinden van overeenkomende hashes in twee bestanden heet a botsing aanval. Het is bekend dat er al minstens één grootschalige aanvaringsaanval is gebeurd voor MD5-hashes. Maar op 27 februari 2017 kondigde Google SHAttered aan, de allereerste gemaakte botsing voor SHA-1. Google was in staat om een PDF-bestand te maken met dezelfde SHA-1 hash als een ander PDF-bestand, ondanks dat het een andere inhoud had.
SHAttered is uitgevoerd in een PDF-bestand. PDF's zijn een relatief losse bestandsindeling; er kunnen veel kleine veranderingen op bitniveau worden aangebracht zonder te verhinderen dat lezers het openen of zichtbare verschillen veroorzaken. PDF's worden ook vaak gebruikt om malware te leveren. Hoewel SHAttered zou kunnen werken op andere typen bestanden, zoals ISO's, worden certificaten strikt gespecificeerd, waardoor een dergelijke aanval onwaarschijnlijk is.
Dus hoe eenvoudig is deze aanval om uit te voeren? SHAttered was gebaseerd op een methode die Marc Stevens in 2012 ontdekte en die meer dan 2 ^ 60,3 (9.223 kwintiljoen) SHA-1-bewerkingen nodig had - een duizelingwekkend aantal. Deze methode is echter nog steeds 100.000 keer minder bewerkingen dan nodig zou zijn om hetzelfde resultaat met brute kracht te bereiken. Google ontdekte dat met 110 high-end grafische kaarten parallel zou werken, het ongeveer een jaar zou duren om een botsing te produceren. Het huren van deze compute-tijd van Amazon AWS kost ongeveer $ 110.000. Houd er rekening mee dat wanneer de prijzen dalen voor computeronderdelen en u meer stroom voor minder krijgt, aanvallen zoals SHAttered gemakkelijker kunnen worden afgeleverd.
$ 110.000 lijkt misschien veel, maar het ligt binnen het bereik van betaalbaarheid voor sommige organisaties - wat betekent dat cybervillianen in het echte leven digitale handtekeningen van documenten kunnen smeden, interferentie- en versiecontrolesystemen zoals Git en SVN kunnen verstoren of een kwaadaardige Linux ISO legitiem kunnen laten lijken.
Gelukkig zijn er verzachtende factoren die dergelijke aanvallen voorkomen. SHA-1 wordt zelden meer gebruikt voor digitale handtekeningen. Certificaatautoriteiten leveren niet langer certificaten af die zijn ondertekend met SHA-1, en zowel Chrome als Firefox hebben ondersteuning voor hen vrijgegeven. Linux-distributies worden vaker dan eens per jaar uitgebracht, waardoor het onpraktisch wordt voor een aanvaller om een kwaadwillende versie te maken en vervolgens een padding te genereren die dezelfde SHA-1-hash heeft.
Aan de andere kant zijn sommige aanvallen op basis van SHAttered al in de echte wereld aan de gang. Het SVN-versiebeheersysteem gebruikt SHA-1 om bestanden te differentiëren. Als u de twee PDF's uploadt met identieke SHA-1-hashes naar een SVN-repository, raakt deze beschadigd.
Hoe kan ik mezelf beschermen tegen SHA-1-aanvallen?
De typische gebruiker hoeft niet veel te doen. Als u checksums gebruikt om bestanden te vergelijken, moet u SHA-2 (SHA-256) of SHA-3 gebruiken in plaats van SHA-1 of MD5. Evenzo, als u een ontwikkelaar bent, moet u zeker moderne hashing-algoritmen zoals SHA-2, SHA-3 of bcrypt gebruiken. Als je bang bent dat SHAttered is gebruikt om twee verschillende bestanden dezelfde hash te geven, heeft Google een tool op de SHAttered-site uitgebracht die je kan controleren.
Afbeelding Credits: Lego Firefox, Veel hash, Do not Do not Hurt the Web author unknown, Google.