Den första dagen 2016 avslutade Mozilla stödet för en försvagad säkerhetsteknik som heter SHA-1 i Firefox-webbläsaren. Nästan omedelbart vände de om sitt beslut, eftersom det skulle minska åtkomsten till vissa äldre webbplatser. Men i februari 2017 blev deras rädsla äntligen verklighet: forskare bröt SHA-1 genom att skapa den första verkliga kollisionsattacken . Här är vad allt det betyder.
Vad är SHA-1?
SHA i SHA-1 står för Säker hash-algoritm , och helt enkelt, du kan tänka på det som ett slags matematikproblem eller metod som krypterar data som läggs i den . Utvecklad av USA: s NSA, är det en kärnkomponent i många tekniker som används för att kryptera viktiga överföringar på internet. Vanliga krypteringsmetoder SSL och TLS, som du kanske har hört talas om, kan använda en hash-funktion som SHA-1 för att skapa de signerade certifikaten som du ser i webbläsarens verktygsfält.
Vi går inte djupt in i matematik och datavetenskap för någon av SHA-funktionerna, men här är grundidén. En "hash" är en unik kod baserad på inmatning av data . Även små, slumpmässiga strängar av bokstäver som matas in i en hashfunktion som SHA-1 kommer att returnera ett långt, fast antal tecken, vilket gör det (potentiellt) omöjligt att återställa teckensträngen till originaldata. Så här fungerar lösenordsförvaring vanligtvis. När du skapar ett lösenord hashas din lösenordsinmatning och lagras av servern. När du kommer tillbaka, när du skriver in ditt lösenord, hashas det igen. Om den matchar den ursprungliga hashen kan ingången antas vara densamma och du får åtkomst till dina data.
Hash-funktioner är användbara främst eftersom de gör det enkelt att se om ingången, till exempel en fil eller ett lösenord, har ändrats. När ingångsdata är hemliga, som ett lösenord, är hash nästan omöjligt att vända och återställa originaldata (även känd som "nyckel"). Detta skiljer sig lite från "kryptering", vars syfte är att kryptera data i syfte att avkoda dem senare , med hjälp av chiffer och hemliga nycklar. Hashes är helt enkelt tänkt att säkerställa dataintegritet - för att se till att allt är detsamma. Git, programvaran för versionskontroll och distribution för öppen källkod, använder SHA-1-hash av just denna anledning .
Det är mycket teknisk information, men för att uttrycka det enkelt: en hash är inte samma sak som kryptering, eftersom den används för att identifiera om en fil har ändrats .
Hur påverkar den här tekniken mig?
Låt oss säga att du måste besöka en webbplats privat. Din bank, din e-post, till och med ditt Facebook-konto - alla använder kryptering för att hålla den information du skickar dem privat. En professionell webbplats kommer att tillhandahålla kryptering genom att erhålla ett certifikat från en betrodd myndighet - en tredje part, som är säker på att krypteringen är på nivån, privat mellan webbplatsen och användaren och inte spioneras av någon annan part. Detta förhållande med tredje part, kallas Certifikatmyndigheter , eller DET DÄR , är avgörande, eftersom alla användare kan skapa ett "självsignerat" certifikat - det kan du till och med gör det själv på en maskin som kör Linux med Openssl . Symantec och Digicert är till exempel två välkända CA-företag.
Låt oss gå igenom ett teoretiskt scenario: How-To Geek vill hålla inloggade användares sessioner privata med kryptering, så det begär en CA som Symantec med en Förfrågan om certifikatsignering , eller CSR . De skapar en offentlig nyckel och privat nyckel för kryptering och dekryptering av data som skickas över internet. CSR-begäran skickar den offentliga nyckeln till Symantec tillsammans med information om webbplatsen. Symantec kontrollerar nyckeln mot sin post för att verifiera att data är oförändrade av alla parter, eftersom varje liten förändring i data gör hash radikalt annorlunda.
Dessa offentliga nycklar och digitala certifikat är signerade av hashfunktioner, eftersom utdata från dessa funktioner är lätta att se. En offentlig nyckel och ett certifikat med en verifierad hash från Symantec (i vårt exempel), en myndighet, försäkrar en användare av How-To Geek att nyckeln är oförändrad och inte skickas från någon skadlig.
Eftersom hash är lätt att övervaka och omöjligt (vissa skulle säga "svårt") att vända, betyder den korrekta, verifierade hashsignaturen att certifikatet och anslutningen kan lita på, och data kan överenskommas att skickas krypterat från slut till slut . Men tänk om haschen var faktiskt inte unik ?
Vad är en kollisionsattack, och är det möjligt i den verkliga världen?
Du kanske har hört talas om "Födelsedagsproblem" i matematik , även om du kanske inte visste vad det hette. Grundidén är att om du samlar en tillräckligt stor grupp människor är chansen ganska stor att två eller flera personer har samma födelsedag. Högre än du förväntar dig, faktiskt - tillräckligt för att det verkar som en konstig tillfällighet. I en grupp så liten som 23 personer är det 50% chans att två delar födelsedag.
Detta är den inneboende svagheten i alla haschar, inklusive SHA-1. Teoretiskt sett ska SHA-funktionen skapa en unik hash för alla data som läggs i den, men när antalet haschar växer blir det mer troligt att olika datapar kan skapa samma hash. Så man kan skapa ett otillförlitligt certifikat med en identisk hash till ett pålitligt certifikat. Om de fick dig att installera det otillförlitliga certifikatet kan det maskeras som pålitligt och distribuera skadlig data.
Att hitta matchande hashes inom två filer kallas a kollisionsattack . Det är känt att minst en storskalig kollisionsattack redan har hänt för MD5-hash. Men den 27 februari 2017 meddelade Google Krossade , den första någonsin skapade kollisionen för SHA-1. Google kunde skapa en PDF-fil som hade samma SHA-1-hash som en annan PDF-fil, trots att det hade annat innehåll.
SHAttered utfördes på en PDF-fil. PDF-filer är relativt lösa filformat; många små ändringar på bitnivå kan göras utan att läsarna hindrar att öppna den eller orsakar några synliga skillnader. PDF-filer används ofta för att leverera skadlig kod. Även om SHAttered kan arbeta på andra typer av filer, som ISO-filer, är certifikat strikt specificerade, vilket gör en sådan attack osannolik.
Så hur lätt är denna attack att utföra? SHAttered baserades på en metod upptäcktes av Marc Stevens 2012 som krävde över 2 ^ 60,3 (9,223 kvintillioner) SHA-1-operationer - ett svindlande antal. Denna metod är dock fortfarande 100 000 gånger färre operationer än vad som skulle krävas för att uppnå samma resultat med brute force. Google fann att med 110 avancerade grafikkort som fungerar parallellt skulle det ta ungefär ett år att producera en kollision. Att hyra denna beräkningstid från Amazon AWS skulle kosta cirka 110 000 dollar. Tänk på att när priserna sjunker på datordelar och du kan få mer kraft för mindre, blir attacker som SHAttered lättare att dra igång.
110 000 dollar kan tyckas mycket, men det ligger inom prisvärdheten för vissa organisationer - vilket innebär att cybervillians i verkligheten kan skapa digitala dokumentunderskrifter, störa backup- och versionskontrollsystem som Git och SVN eller få ett skadligt Linux-ISO att verka legitimt.
Lyckligtvis finns det förmildrande faktorer som förhindrar sådana attacker. SHA-1 används sällan längre för digitala signaturer. Certifikatutfärdare tillhandahåller inte längre certifikat signerade med SHA-1, och både Chrome och Firefox har tappat stöd för dem. Linux-distributioner släpps vanligtvis oftare än en gång per år, vilket gör det opraktiskt för en angripare att skapa en skadlig version och sedan generera en vadderad för att ha samma SHA-1-hash.
Å andra sidan sker vissa attacker baserade på SHAttered redan i den verkliga världen. SVN-versionskontrollsystemet använder SHA-1 för att skilja filer. Att ladda upp de två PDF-filerna med identiska SHA-1-haschar till ett SVN-arkiv kommer att orsaka det att korrumpera .
Hur kan jag skydda mig från SHA-1-attacker?
Det finns inte mycket för den typiska användaren att göra. Om du använder kontrollsummor för att jämföra filer bör du använda SHA-2 (SHA-256) eller SHA-3 i stället för SHA-1 eller MD5. På samma sätt, om du är en utvecklare, se till att använda mer moderna hashingalgoritmer som SHA-2, SHA-3 eller bcrypt. Om du är orolig för att SHAttered har använts för att ge två distinkta filer samma hash, har Google släppt ett verktyg på SHAttered webbplats som kan kontrollera för dig.
Bildkrediter: Lego Firefox , Massor av Hash , Skada inte webbförfattaren okänd, Google .