Vad är SHAttered? SHA-1 kollisionsattacker, förklaras
Den första dagen av 2016 avslutade Mozilla stöd för en försvagad säkerhetsteknik som heter SHA-1 i Firefox-webbläsaren. Nästan omedelbart vände de sitt beslut, eftersom det skulle minska tillgången till vissa äldre webbplatser. Men i februari 2017 blev deras rädsla äntligen sann: forskare bröt SHA-1 genom att skapa den första verkliga kollisionsattacken. Här är vad allting betyder.
Vad är SHA-1?
SHA i SHA-1 står för Secure Hash Algorithm, och enkelt sagt, du kan tänka på det som ett slags matematiskt problem eller metod som krypterar de data som läggs in i den. Utvecklat av USA: s NSA, det är en kärnkomponent i många teknologier 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 hashfunktion som SHA-1 för att skapa de signerade certifikat som du ser i din webbläsarverktygsfält.
Vi kommer inte att gå djupt in i matematik och datavetenskap av någon av SHA-funktionerna, men här är grundtanken. En "hash" är en unik kod baserad på inmatningen av data. Även små, slumpmässiga strängar av bokstäver som matas in till en hashfunktion som SHA-1 kommer att återge ett långt uppsättning antal tecken, vilket gör det (potentiellt) omöjligt att återställa teckensträngen tillbaka till originaldata. Så här fungerar lösenordslagring vanligtvis. När du skapar ett lösenord har ditt lösenord inmatats hashed och lagrats av servern. När du återvänder, när du skriver in ditt lösenord, har det blivit igen. Om det matchar originalens hash kan ingången antas vara densamma, och du får tillgång till dina data.
Hash-funktioner är användbara, främst eftersom de gör det enkelt att berätta 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 ursprungliga data (även känd som "nyckeln"). Det här är lite annorlunda än "kryptering", vars syfte är att kryptera data i syfte att descrambling det senare, med hjälp av cifrar och hemliga nycklar. Hashes är bara avsedda att säkerställa dataintegritet-för att se till att allt är detsamma. Git, versionskontroll- och distributionsprogramvaran för öppen källkod, använder SHA-1-haschar av samma anledning.
Det är mycket teknisk information, men för att uttrycka det enkelt: en hash är inte samma sak som kryptering, eftersom Det används för att identifiera om en fil har ändrats.
Hur påverkar denna teknik mig??
Låt oss säga att du behöver besöka en webbplats privat. Din bank, din email, även ditt Facebook-konto, alla använder kryptering för att hålla de uppgifter du skickar dem privata. En professionell webbplats kommer att tillhandahålla kryptering genom att erhålla ett certifikat från en betrodd myndighet - en tredje part som är betrodd för att säkerställa att krypteringen är på nivå, privat mellan webbplatsen och användaren och inte spioneras av någon annan part. Detta förhållande med tredje part, kallad Certifikatutfärdare, eller CA, är avgörande eftersom alla användare kan skapa ett "självsignerat" certifikat. Du kan även göra det själv på en dator som kör Linux med Open SSL. Symantec och Digicert är till exempel två kä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 Certifikatsigneringsbegäran, eller CSR. De skapar en offentlig nyckel och privat nyckel för kryptering och dekryptering av data som skickas över internet. CSR-förfrågan skickar den offentliga nyckeln till Symantec tillsammans med information om webbplatsen. Symantec kontrollerar nyckeln mot sin rekord för att verifiera att uppgifterna är oförändrade av alla parter, eftersom en liten ändring av data gör ishallen radikalt annorlunda.
Dessa offentliga nycklar och digitala certifikat är signerade av hashfunktioner, eftersom utmatningen av dessa funktioner är lätt att se. En offentlig nyckel och ett certifikat med en verifierad hash från Symantec (i vårt exempel), en auktoritet, försäkrar en användare av How-To Geek att nyckeln är oförändrad och inte skickad 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 hash signaturen att certifikatet och anslutningen kan lita på, och data kan överenskommas att skickas krypterad från slutet till slutet . Men vad händer om hasen var inte faktiskt unik?
Vad är en kollisionsattack, och är det möjligt i den verkliga världen?
Du kanske har hört talas om "Födelsedagsproblemet" i matematiken, även om du kanske inte vet vad det kallades. Grundtanken är att om du samlar en tillräckligt stor grupp människor är chansen ganska hög att två eller flera personer kommer att ha samma födelsedag. Högre än du förväntar dig, faktiskt nog att det verkar som en konstig slump. I en grupp så liten som 23 personer finns det 50% chans att två ska dela en födelsedag.
Detta är den inneboende svagheten i alla haschar, inklusive SHA-1. Teoretiskt bör SHA-funktionen skapa en unik hash för alla data som läggs in i den, men eftersom antalet haschar växer blir det mer troligt att olika datapar kan skapa samma hash. Så man kan skapa ett otroligt certifikat med en identisk hash till ett betrodat certifikat. Om de fick dig att installera det otillförlitliga certifikatet, kan det maskeras som betrodda och distribuera skadliga data.
Att hitta matchande hash inom två filer heter a kollisionsattack. Minst en storskalig kollisionsattack är känd att den redan har hänt för MD5-hash. Men den 27 februari 2017 meddelade Google SHAttered, den första någonsin utformade 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 olika innehåll.
SHAttered utfördes på en PDF-fil. PDF-filer är ett relativt löst filformat; Många små förändringar på bitnivå kan göras utan att förhindra att läsare öppnar det eller orsakar synliga skillnader. PDF-filer används ofta också för att leverera skadlig kod. Medan SHAttered kan fungera på andra typer av filer, som ISOs, är certifikaten noggrant specificerade, vilket gör en sådan attack osannolikt.
Så hur lätt är denna attack att utföra? SHAttered grundades på en metod som upptäckts av Marc Stevens 2012, vilket krävde över 2 ^ 60,3 (9,223 quintillion) SHA-1-operationer - ett svindlande nummer. Denna metod är dock fortfarande 100 000 gånger färre operationer än vad som krävs för att uppnå samma resultat med brute force. Google fann att med 110 high-end grafikkort som arbetar 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 för datordelar och du kan få mer ström till mindre, blir attacker som SHAttered lättare att dra av.
110 000 dollar kan tyckas vara mycket, men det ligger inom rimligheten för vissa organisationer, vilket betyder att verkliga cybervillians kan förfalska digitala dokument signaturer, störa säkerhetskopierings- och versionsstyrningssystem som Git och SVN eller göra en skadlig Linux-ISO verklig.
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 omöjligt 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-versionens kontrollsystem använder SHA-1 för att differentiera filer. Överföring av de två PDF-filerna med identiska SHA-1-haschar till ett SVN-arkiv gör att den korrumperar.
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 checksums för att jämföra filer, ska 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, var noga med att använda mer moderna hashingalgoritmer som SHA-2, SHA-3 eller bcrypt. Om du är orolig att SHAttered har använts för att ge två separata filer samma hash, har Google släppt ett verktyg på SHAttered-webbplatsen som kan kontrollera dig.
Bildkrediter: Lego Firefox, massor av hash, snälla, gör inte skada författaren okänd, Google.