Hvad er SHAttered? SHA-1 Kollisionsangreb, forklaret

Indholdsfortegnelse:

Video: Hvad er SHAttered? SHA-1 Kollisionsangreb, forklaret

Video: Hvad er SHAttered? SHA-1 Kollisionsangreb, forklaret
Video: How to Enable Desktop Peek or Aero Peek in Windows 10 Tutorial 2024, Marts
Hvad er SHAttered? SHA-1 Kollisionsangreb, forklaret
Hvad er SHAttered? SHA-1 Kollisionsangreb, forklaret
Anonim
Den første dag i 2016 afsluttede Mozilla støtten til en svækkende sikkerhedsteknologi kaldet SHA-1 i Firefox-browseren. Næsten øjeblikkeligt vendte de deres beslutning, da det ville reducere adgangen til nogle ældre hjemmesider. Men i februar 2017 blev deres frygt endelig tilfældet: forskere brød SHA-1 ved at skabe det første virkelige verdens kollisionsangreb. Her er hvad alt det betyder.
Den første dag i 2016 afsluttede Mozilla støtten til en svækkende sikkerhedsteknologi kaldet SHA-1 i Firefox-browseren. Næsten øjeblikkeligt vendte de deres beslutning, da det ville reducere adgangen til nogle ældre hjemmesider. Men i februar 2017 blev deres frygt endelig tilfældet: forskere brød SHA-1 ved at skabe det første virkelige verdens kollisionsangreb. Her er hvad alt det betyder.

Hvad er SHA-1?

Image
Image

SHA i SHA-1 står for Secure Hash Algoritme, og simpelthen sætte, kan du tænke på det som en slags matematisk problem eller metode der scrambles de data, der er sat i den. Udviklet af USA's NSA, er det en vigtig del af mange teknologier, der bruges til at kryptere vigtige transmissioner på internettet. Fælles krypteringsmetoder SSL og TLS, som du måske har hørt om, kan bruge en hash-funktion som SHA-1 til at oprette de underskrevne certifikater, du ser på din browser-værktøjslinje.

Vi vil ikke gå dybt ind i matematik og datalogi om nogen af SHA-funktionerne, men her er den grundlæggende idé. En "hash" er en unik kode baseret på input af data. Selv små bogstaver af bogstaver, der indtastes i en hashfunktion som SHA-1, returnerer et langt sæt antal tegn, hvilket gør det muligt (potentielt) umuligt at vende tilbage til tegnstrengen tilbage til de oprindelige data. Sådan fungerer adgangskodeopbevaring normalt. Når du opretter en adgangskode, er dit password indtastet hashed og gemt af serveren. Når du vender tilbage, når du har indtastet dit kodeord, er det igen. Hvis det matcher den originale hash, kan indgangen antages at være den samme, og du får adgang til dine data.
Vi vil ikke gå dybt ind i matematik og datalogi om nogen af SHA-funktionerne, men her er den grundlæggende idé. En "hash" er en unik kode baseret på input af data. Selv små bogstaver af bogstaver, der indtastes i en hashfunktion som SHA-1, returnerer et langt sæt antal tegn, hvilket gør det muligt (potentielt) umuligt at vende tilbage til tegnstrengen tilbage til de oprindelige data. Sådan fungerer adgangskodeopbevaring normalt. Når du opretter en adgangskode, er dit password indtastet hashed og gemt af serveren. Når du vender tilbage, når du har indtastet dit kodeord, er det igen. Hvis det matcher den originale hash, kan indgangen antages at være den samme, og du får adgang til dine data.
Hash-funktioner er nyttige, primært fordi de gør det let at se, om input, for eksempel en fil eller et kodeord, er ændret. Når indtastningsdataene er hemmelige, som et kodeord, er hasen næsten umuligt at vende og genoprette de oprindelige data (også kendt som "nøglen"). Dette er en smule forskellig fra "kryptering", hvis formål er at kryptere data med det formål at descrambling det senere ved hjælp af cifre og hemmelige nøgler. Hashes er simpelthen beregnet til at sikre dataintegritet - for at sikre, at alt er det samme. Git, versionskontrollen og distributionssoftwaren til open source-kode, bruger SHA-1 hashes af denne grund.
Hash-funktioner er nyttige, primært fordi de gør det let at se, om input, for eksempel en fil eller et kodeord, er ændret. Når indtastningsdataene er hemmelige, som et kodeord, er hasen næsten umuligt at vende og genoprette de oprindelige data (også kendt som "nøglen"). Dette er en smule forskellig fra "kryptering", hvis formål er at kryptere data med det formål at descrambling det senere ved hjælp af cifre og hemmelige nøgler. Hashes er simpelthen beregnet til at sikre dataintegritet - for at sikre, at alt er det samme. Git, versionskontrollen og distributionssoftwaren til open source-kode, bruger SHA-1 hashes af denne grund.

Det er en masse tekniske oplysninger, men for at sige det simpelt: en hash er ikke den samme som kryptering, da Det bruges til at identificere, om en fil er ændret.

Hvordan påvirker denne teknologi mig?

Image
Image

Lad os sige, at du skal besøge et websted privat. Din bank, din email, selv din Facebook-konto, bruger alle kryptering til at holde de data, du sender dem privat. En professionel hjemmeside vil give kryptering ved at få et certifikat fra en betroet myndighed - en tredjepart, der har tillid til at sikre, at krypteringen er på niveauet, privat mellem hjemmesiden og brugeren, og ikke bliver spioneret af nogen anden part. Dette forhold til tredjepart, kaldet Certificeringsmyndigheder, eller CA, er afgørende, da enhver bruger kan oprette et "selvsigneret" certifikat. Du kan endda gøre det selv på en maskine, der kører Linux med Open SSL. Symantec og Digicert er for eksempel to kendte CA-virksomheder.

Image
Image

Lad os gennemgå et teoretisk scenario: How-To Geek ønsker at holde indlogget brugeresessioner privat med kryptering, så det kræver en CA som Symantec med en Certificate Signing Request, eller CSR. De opretter en offentlig nøgle og privat nøgle til kryptering og dekryptering af data sendt over internettet. CSR-anmodningen sender den offentlige nøgle til Symantec sammen med oplysninger om hjemmesiden. Symantec kontrollerer nøglen mod dens rekord for at kontrollere, at dataene er uændrede af alle parter, fordi enhver lille ændring i dataene gør hasen radikalt anderledes.

Disse offentlige nøgler og digitale certifikater er underskrevet af hash-funktioner, fordi produktionen af disse funktioner er let at se. En offentlig nøgle og et certifikat med en verificeret hash fra Symantec (i vores eksempel), en myndighed, sikrer en bruger af How-To Geek, at nøglen er uændret og ikke sendes fra nogen skadelig.
Disse offentlige nøgler og digitale certifikater er underskrevet af hash-funktioner, fordi produktionen af disse funktioner er let at se. En offentlig nøgle og et certifikat med en verificeret hash fra Symantec (i vores eksempel), en myndighed, sikrer en bruger af How-To Geek, at nøglen er uændret og ikke sendes fra nogen skadelig.
Image
Image

Fordi hash er let at overvåge og umuligt (nogle vil sige "vanskeligt") at vende om, betyder den korrekte bekræftede hash signatur at certifikatet og forbindelsen kan stole på, og data kan aftales for at blive sendt krypteret fra ende til ende. Men hvad hvis hasen var faktisk ikke unik?

Hvad er et kollisionsangreb, og er det muligt i den virkelige verden?

Du har måske hørt om "Fødselsdagsproblemet" i matematik, selv om du måske ikke har kendt, hvad den blev kaldt. Den grundlæggende ide er, at hvis du samler en stor nok gruppe mennesker, er chancerne ret høje, at to eller flere mennesker vil have samme fødselsdag. Højere end du ville forvente, faktisk - nok at det virker som en underlig tilfældighed. I en gruppe så lille som 23 personer er der en 50% chance for at to deler en fødselsdag.

Dette er den iboende svaghed i alle hash'er, herunder SHA-1. Teoretisk skal SHA-funktionen skabe en unik hash for alle data, der er sat ind i den, men som antallet af hash vokser, bliver det mere sandsynligt, at forskellige par af data kan skabe den samme hash.Så man kunne skabe et usikkert certifikat med en identisk hash til et betroet certifikat. Hvis de fik dig til at installere det usikrede certifikat, kunne det maskerer som betroet og distribuere skadelige data.
Dette er den iboende svaghed i alle hash'er, herunder SHA-1. Teoretisk skal SHA-funktionen skabe en unik hash for alle data, der er sat ind i den, men som antallet af hash vokser, bliver det mere sandsynligt, at forskellige par af data kan skabe den samme hash.Så man kunne skabe et usikkert certifikat med en identisk hash til et betroet certifikat. Hvis de fik dig til at installere det usikrede certifikat, kunne det maskerer som betroet og distribuere skadelige data.
Image
Image

At finde matchende hash inden for to filer hedder a kollisionsangreb. Mindst et storskala kollisionsangreb er kendt for at være sket for MD5 hashes. Men den 27. februar 2017 annoncerede Google SHAttered, den første nogensinde udformede kollision for SHA-1. Google var i stand til at oprette en PDF-fil, der havde den samme SHA-1 hash som en anden PDF-fil, på trods af at det havde anderledes indhold.

SHAttered blev udført på en PDF-fil. PDF-filer er et relativt løst filformat; mange små ændringer på bitniveau kan laves uden at forhindre læsere i at åbne det eller forårsage synlige forskelle. PDF-filer bruges også ofte til at levere malware. Mens SHAttered kunne arbejde på andre typer filer, som ISO'er, er certifikater stift specificeret, hvilket gør et sådant angreb usandsynligt.

Så hvor let er dette angreb at udføre? SHAttered var baseret på en metode, der blev opdaget af Marc Stevens i 2012, hvilket krævede over 2 ^ 60,3 (9.223 quintillion) SHA-1 operationer - et svimlende antal. Denne metode er dog stadig 100.000 gange færre operationer end det ville være nødvendigt for at opnå det samme resultat med brute force. Google fandt, at med 110 high-end grafikkort, der arbejder parallelt, ville det tage cirka et år at producere en kollision. Leje denne beregningstid fra Amazon AWS ville koste omkring $ 110.000. Husk, at når priserne falder for computer dele, og du kan få mere strøm til mindre, bliver angreb som SHAttered lettere at trække.

$ 110.000 kan virke som en masse, men det er inden for rammerne af overkommelighed for nogle organisationer, hvilket betyder, at virkelige liv cybervillians kunne forfalske digitale dokument signaturer, forstyrre backup og version kontrol systemer som Git og SVN, eller gøre en ondsindet Linux ISO synes legitim.

Heldigvis er der afbødende faktorer, der forhindrer sådanne angreb. SHA-1 bruges sjældent til digitale signaturer længere. Certifikatautoriteter giver ikke længere certifikater, der er underskrevet med SHA-1, og både Chrome og Firefox har mistet støtten til dem. Linux-distributioner frigives typisk oftere end en gang om året, hvilket gør det umuligt for en hacker at oprette en ondsindet version og derefter generere en polstret til at have samme SHA-1 hash.

På den anden side forekommer nogle angreb baseret på SHAttered allerede i den virkelige verden. SVN-versionsstyringssystemet bruger SHA-1 til at differentiere filer. Ved at uploade de to PDF-filer med identiske SHA-1-hash til et SVN-depot vil det blive ødelagt.

Hvordan kan jeg beskytte mig mod SHA-1-angreb?

Der er ikke meget for den typiske bruger at gøre. Hvis du bruger checksums til at sammenligne filer, skal du bruge SHA-2 (SHA-256) eller SHA-3 i stedet for SHA-1 eller MD5. Ligeledes, hvis du er en udvikler, skal du sørge for at bruge mere moderne hashing-algoritmer som SHA-2, SHA-3 eller bcrypt. Hvis du er bekymret for, at SHAttered har været brugt til at give to forskellige filer samme hash, har Google udgivet et værktøj på SHAttered-webstedet, der kan tjekke for dig.

Billedkreditter: Lego Firefox, Masser af Hash, vær venlig at ikke skade webforfatteren ukendt, Google.

Anbefalede: