Hva er SHAttered? SHA-1 Kollisjonsangrep, forklart

Innholdsfortegnelse:

Hva er SHAttered? SHA-1 Kollisjonsangrep, forklart
Hva er SHAttered? SHA-1 Kollisjonsangrep, forklart

Video: Hva er SHAttered? SHA-1 Kollisjonsangrep, forklart

Video: Hva er SHAttered? SHA-1 Kollisjonsangrep, forklart
Video: How to Enable Desktop Peek or Aero Peek in Windows 10 Tutorial - YouTube 2024, April
Anonim
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.
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?

Image
Image

SHA i SHA-1 står for Secure Hash Algoritme, og ganske enkelt sagt, kan du 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 i nettleseren.

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å inngangen til noen data. Selv liten, tilfeldig streng av bokstaver som inngår i en hash-funksjon som SHA-1, returnerer et langt, angitt 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, er det hashed igjen. Hvis den samsvarer med den originale hasen, kan inngangen antas å være den samme, og du får tilgang til dataene dine.
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å inngangen til noen data. Selv liten, tilfeldig streng av bokstaver som inngår i en hash-funksjon som SHA-1, returnerer et langt, angitt 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, er det hashed 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 hasen 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.
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 hasen 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?

Image
Image

La oss si at du må besøke et nettsted privat. Din bank, din e-post, til og med Facebook-kontoen din, bruker alle 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 nettsiden 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.

Image
Image

La oss gjennomgå et teoretisk scenario: How-To Geek ønsker å holde innlogget brukeres ø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 utgangene til disse funksjonene er enkle å se. En offentlig nøkkel og et sertifikat med en verifisert hash fra Symantec (i vårt eksempel), en autoritet, sikrer en bruker av How-To Geek at nøkkelen er uendret, og ikke sendes fra noen skadelig.
Disse offentlige nøklene og digitale sertifikater er signert av hash-funksjoner, fordi utgangene til disse funksjonene er enkle å se. En offentlig nøkkel og et sertifikat med en verifisert hash fra Symantec (i vårt eksempel), en autoritet, sikrer en bruker av How-To Geek at nøkkelen er uendret, og ikke sendes fra noen skadelig.
Image
Image

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 bli enige om å 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 det 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 hashes 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.
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 hashes 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.
Image
Image

Å finne matchende hashes i to filer kalles a kollisjon angrep. Det er kjent at minst en storskala kollisjon 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 at leserne åpner den eller forårsaker 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å det samme resultatet 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 backup- 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 i året, noe som gjør det umulig for en angriper å lage en skadelig 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. Når du laster opp de to PDF-dokumentene 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 kontrollsummer til å 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.

Anbefalt: