Hva er SHAttered? SHA-1 Kollisjonsangrep, forklart
Den første dagen i 2016 avsluttet Mozilla støtte for en svekkende sikkerhetsteknologi kalt SHA-1 i Firefox nettleseren. Nesten umiddelbart reverserte de sin beslutning, da det ville kutte tilgangen til noen eldre nettsteder. Men i februar 2017 ble deres frykt til slutt sant: Forskere brøt SHA-1 ved å skape det første virkelige kollisjonsangrepet. Her er hva alt det betyr.
Hva er SHA-1?
SHA i SHA-1 står for Secure Hash Algoritme, og ganske enkelt sagt, du kan tenke på det som en slags matematisk problem eller metode som krypterer dataene som er lagt inn i den. Utviklet av USAs NSA, er det en sentral del av mange teknologier som brukes til å kryptere viktige overføringer på internett. Vanlige krypteringsmetoder SSL og TLS, som du kanskje har hørt om, kan bruke en hash-funksjon som SHA-1 for å lage de signerte sertifikatene du ser i verktøylinjen på nettleseren din..
Vi vil ikke gå dypt inn i matematikk og datavitenskap om noen av SHA-funksjonene, men her er grunnleggende ideen. En "hash" er en unik kode basert på datainngangene. Selv liten, tilfeldig streng med bokstaver som inngår i en hash-funksjon som SHA-1, returnerer et langt, satt antall tegn, noe som gjør det mulig (potensielt) umulig å returnere tegnstrengen tilbake til de opprinnelige dataene. Slik fungerer passordoppbevaring vanligvis. Når du oppretter et passord, er passordinngangen din hashed og lagret av serveren. Når du kommer tilbake, når du skriver inn passordet ditt, har det blitt igjen. Hvis den samsvarer med den originale hasen, kan inngangen antas å være den samme, og du får tilgang til dataene dine.
Hashfunksjoner er nyttige, hovedsakelig fordi de gjør det enkelt å fortelle om inngangen, for eksempel en fil eller et passord, har endret seg. Når inngangsdata er hemmelige, som et passord, er hash nesten umulig å reversere og gjenopprette de opprinnelige dataene (også kjent som "nøkkelen"). Dette er litt forskjellig fra "kryptering", hvis formål er å kryptere data med det formål å descrambling det senere, ved hjelp av cifre og hemmelige nøkler. Hashes er bare ment å sikre dataintegritet-for å sikre at alt er det samme. Git, versjonskontroll og distribusjonsprogramvare for åpen kildekode, bruker SHA-1 hashes av denne grunn.
Det er mye teknisk informasjon, men for å si det enkelt: en hash er ikke det samme som kryptering siden Det brukes til å identifisere om en fil har endret seg.
Hvordan påvirker denne teknologien meg?
La oss si at du må besøke et nettsted privat. Din bank, din e-post, til og med Facebook-kontoen din, alle bruker kryptering for å beholde dataene du sender dem privat. Et profesjonelt nettsted vil gi kryptering ved å skaffe et sertifikat fra en klarert autoritet - en tredjepart, klarert å sikre at krypteringen er på nivået, privat mellom nettstedet og brukeren, og ikke blir spionert av noen annen part. Dette forholdet med tredjepart, kalt Sertifikatmyndigheter, eller CA, er avgjørende, siden noen brukere kan lage et "selvsignert" sertifikat. Du kan selv gjøre det selv på en maskin som kjører Linux med Open SSL. Symantec og Digicert er to kjente CA-selskaper, for eksempel.
La oss gjennomgå et teoretisk scenario: How-To Geek ønsker å holde innloggede brukers økter privat med kryptering, så det krever en CA som Symantec med en Sertifikat signeringsforespørsel, eller CSR. De lager en offentlig nøkkel og privat nøkkel for kryptering og dekryptering av data som sendes over internett. CSR-forespørselen sender offentlig nøkkel til Symantec sammen med informasjon om nettstedet. Symantec kontrollerer nøkkelen mot sin registrering for å bekrefte at dataene er uendret av alle parter, fordi en liten endring i dataene gjør isen radikalt annerledes.
Disse offentlige nøklene og digitale sertifikater er signert av hash-funksjoner, fordi utdataene fra disse funksjonene er enkle å se. En offentlig nøkkel og et sertifikat med en verifisert hash fra Symantec (i vårt eksempel), en myndighet, sikrer en bruker av How-To Geek at nøkkelen er uendret, og ikke sendes fra noen skadelig.
Fordi hasen er lett å overvåke og umulig (noen vil si "vanskelig") å reversere, betyr den riktige, verifiserte hash signaturen at sertifikatet og tilkoblingen kan stole på, og data kan avtales for å bli sendt kryptert fra ende til slutt . Men hva om hasen var egentlig ikke unik?
Hva er et kollisjonsangrep, og er det mulig i den virkelige verden?
Du har kanskje hørt om "Bursdagsproblemet" i matematikk, selv om du kanskje ikke har kjent hva den ble kalt. Den grunnleggende ideen er at hvis du samler en stor nok gruppe mennesker, er sjansene ganske høye at to eller flere mennesker vil ha samme bursdag. Høyere enn du ville forvente, faktisk nok - det virker som en merkelig tilfeldighet. I en gruppe så liten som 23 personer, er det en 50% sjanse for at to vil dele en bursdag.
Dette er den iboende svakheten i alle hashene, inkludert SHA-1. Teoretisk skal SHA-funksjonen skape en unik hash for data som er satt inn i den, men etter hvert som antall hashene vokser, blir det mer sannsynlig at forskjellige datapar kan skape samme hash. Så man kan skape et usikkert sertifikat med en identisk hash til et klarert sertifikat. Hvis de fikk deg til å installere det usikrede sertifikatet, kunne det maskeres som betrodd og distribuere skadelige data.
Å finne matchende hash i to filer kalles a kollisjon angrep. Det er kjent at minst ett storskala-angrep angrep allerede har skjedd for MD5-hashes. Men den 27. februar 2017 annonserte Google SHAttered, den første noensinne laget kollisjon for SHA-1. Google kunne lage en PDF-fil som hadde samme SHA-1 hash som en annen PDF-fil, til tross for at det hadde annet innhold.
SHAttered ble utført på en PDF-fil. PDF-filer er et relativt løs filformat; Mange små, bitnivåendringer kan gjøres uten å hindre leserne i å åpne den eller forårsake synlige forskjeller. PDF-filer brukes også ofte til å levere skadelig programvare. Mens SHAttered kan fungere på andre typer filer, som ISOs, er sertifikater stift spesifisert, noe som gjør et slikt angrep usannsynlig.
Så hvor lett er dette angrepet å utføre? SHAttered var basert på en metode oppdaget av Marc Stevens i 2012 som krevde over 2 ^ 60,3 (9,223 quintillion) SHA-1 operasjoner - et svimlende tall. Denne metoden er imidlertid fortsatt 100.000 ganger færre operasjoner enn det som kreves for å oppnå samme resultat med brute force. Google fant at med 110 high-end grafikkort som fungerer parallelt, vil det ta omtrent ett år å produsere en kollisjon. Leie denne beregningstiden fra Amazon AWS ville koste rundt $ 110.000. Husk at når prisene faller for datadelementer og du kan få mer strøm til mindre, blir angrep som SHAttered lettere å trekke av.
$ 110 000 kan virke som en del, men det er innenfor rimelige priser for enkelte organisasjoner, noe som betyr at virkelige cybervillians kan forfalske digitale dokument signaturer, forstyrre sikkerhetskopierings- og versjonskontrollsystemer som Git og SVN, eller få en skadelig Linux ISO til å være legitim.
Heldigvis finnes det avbødende faktorer som hindrer slike angrep. SHA-1 brukes sjelden til digitale signaturer lenger. Sertifikatmyndighetene gir ikke lenger sertifikater signert med SHA-1, og både Chrome og Firefox har mistet støtten til dem. Linux-distribusjoner slipper vanligvis oftere enn en gang per år, noe som gjør det umulig for en angriper å lage en ondsinnet versjon og deretter generere en polstret for å ha samme SHA-1-hash.
På den annen side skjer noen angrep basert på SHAttered allerede i den virkelige verden. SVN-versjonens kontrollsystem bruker SHA-1 til å skille mellom filer. Hvis du laster opp de to PDF-ene med identiske SHA-1-hashes til et SVN-depot, vil det føre til at det blir ødelagt.
Hvordan kan jeg beskytte meg mot SHA-1-angrep?
Det er ikke mye for den typiske brukeren å gjøre. Hvis du bruker sjekksum for å sammenligne filer, bør du bruke SHA-2 (SHA-256) eller SHA-3 i stedet for SHA-1 eller MD5. På samme måte, hvis du er en utvikler, må du bruke mer moderne hashing-algoritmer som SHA-2, SHA-3 eller bcrypt. Hvis du er bekymret for at SHAttered har blitt brukt til å gi to forskjellige filer samme hash, har Google gitt ut et verktøy på SHAttered-siden som kan sjekke for deg.
Image Credits: Lego Firefox, Massevis av Hash, vær så snill, ikke vær skadelig for Internett-forfatteren, ukjent, Google.