Bakdörr , hemlig ingång (från den engelska bakdörren - "bakdörr", bokstavligen "bakdörr") - en defekt i algoritmen som medvetet är inbyggd i den av utvecklaren och tillåter obehörig åtkomst till data eller fjärrkontroll av operativsystemet och datorn som helhet [1] .
Huvudsyftet med en bakdörr är att i hemlighet och snabbt få tillgång till data, i de flesta fall krypterad och skyddad. Till exempel kan en bakdörr byggas in i krypteringsalgoritmen för efterföljande avlyssning av den säkra kanalen av en angripare [1] [2] .
Denna generator utvecklades av NSA och standardiserades som en kryptografiskt stark pseudo-slumptalsgenerator av US National Institute of Standards and Technology NIST 2006. Men redan 2007 föreslog oberoende forskare att en bakdörr kunde byggas in i denna algoritm. [3] [4] [5]
En illustration av algoritmens funktion enligt NSA-specifikationen [6] :
Denna algoritm använder elliptiska kurvor. - generatorn av en grupp av punkter på en elliptisk kurva, - en punkt på en elliptisk kurva - en konstant definierad av standarden, hur den valdes är okänt. Parametrarna för själva kurvan är också inställda av standarden.
Funktionsprincip:Kurva ekvation
kan skrivas om i formen och skrivas ner följande uttryck för driften av algoritmen:
... _ — Generatorns interna tillstånd i det aktuella steget - generatorns interna tillstånd i nästa steg — generatorutgång vid det aktuella steget Påstådd bakdörr:Eftersom är ett primtal , så finns det ett tal så att . Att hitta är ett beräkningssvårt problem med diskret logaritm på en elliptisk kurva, för vilket det för närvarande inte finns några effektiva algoritmer. Men om vi antar att angriparen vet , då erhålls följande attack: Om är nästa utgång från generatorn, och om det finns sådan att , så ligger punkten på kurvan och följande likhet gäller för den: . Genom att känna till numret kan du beräkna: . Således kan en angripare som känner till numret inte bara beräkna nästa utdata från generatorn, utan också snabbt räkna upp alla möjliga interna tillstånd hos generatorn och återställa dess initiala interna tillstånd. Enligt oberoende studier [2] [7] räcker med kunskap endast 30 byte av generatorns utdatasekvens för att återställa dess initiala interna tillstånd genom enkel uppräkning av värden. Enligt forskarna kan en sådan sårbarhet betraktas som en bakdörr.
Yandex- forskare har upptäckt en sårbarhet i implementeringen av TLS-protokollet i en av Apples mjukvaruprodukter [2] . Enligt deras åsikt kan det här felet mycket väl visa sig vara en bakdörr som medvetet byggts in i algoritmen av en av utvecklarna.
Kodavsnitt med ett fel: statisk DSStatus SSLVerifySignedServerKeyExchnge (....) { DSStatus fel ; .... if (( err = SSLHashSHA1 . uppdatering ( & hashCtx , & signedParams )) != 0 ) måste misslyckas ; måste misslyckas ; if (( SSHashSHA1 . final ( & hashCtx , & hashOut )) != 0 ) måste misslyckas ; .... misslyckas : .... returnera fel ; }Som du kan se finns det två rader med goto fail efter den första if -satsen , och den andra raden exekveras alltid, oavsett resultatet av if . Därför är certifikatverifieringsproceduren ofullständig. En angripare med kunskap om denna sårbarhet kan förfalska certifikatet och autentiseras. Detta kommer att tillåta honom att organisera en man-in-the-middle- attack , och därigenom störa den säkra anslutningen mellan klienten och servern. Forskarna som upptäckte detta fel i implementeringen kan inte säga säkert om det var avsiktligt eller oavsiktligt. Det är mycket möjligt att detta är en bakdörr inbyggd i algoritmen av en av utvecklarna.
Många moderna kryptografiska algoritmer använder en viss uppsättning interna konstanter i sitt arbete. Dessa konstanter är som regel specificerade av standarden och väljs på grund av kryptografiskt motstånd mot för närvarande kända typer av kryptoanalys . Men valet av konstanter vid standardisering av en algoritm kan teoretiskt sett användas av utvecklare med illvillig avsikt: till exempel för att skapa vissa sårbarheter och bakdörrar i algoritmen.
Som ett sådant exempel på användningen av konstanter kan vi citera nya forskningsartiklar om ämnet så kallad "malicious hashing" [8] [9] , där författarna lyckades bygga kollisioner för den kryptografiska hashfunktionen SHA1 genom att modifiera dess runda konstanter. Observera att attacken som föreslagits av författarna till studien inte är en attack på själva SHA1- hashfunktionen , den tillåter bara att hitta kollisioner om de runda konstanterna kan ändras och endast för vissa filtyper.
Kort beskrivning av SHA1 :SHA1 är en modern rund hash-funktion. Hashingalgoritmen är följande:
Syftet med den övervägda attacken är att hitta sådana konstanter och sådana meddelanden och , att . Denna attack modifierar endast de första 512 bitarna (block 1) av meddelanden för vilka det krävs för att bygga en kollision. Algoritmen är baserad på den välkända skillnadsattacken på SHA1 som föreslogs 2005 [10] [11] och har komplexitet i operationsordningen, vilket gör det svårt att implementera i praktiken. Därför har inga riktiga kollisioner för SHA1 hittats hittills.
Men i fallet med att skapa en skadlig version av SHA1 kan en angripare variera inte bara meddelandeblock och utan även runda konstanter . Enligt forskning [9] reducerar detta attackens komplexitet avsevärt till operationsordningen och gör konstruktionen av sådana kollisioner till en verklig uppgift som kan utföras på flera datorer. Således lyckades författarna till studien bygga enblockskollisioner för många kända filtyper.
Enkelblockkollision:och - de första blocken av meddelanden (512 bitar) som skiljer sig från varandra, men som ger samma hashsumma - resten av innehållet, vilket är detsamma för båda filerna Ett exempel på att använda skadlig hashing för att skapa bakdörrar
Med hjälp av den beskrivna attacken skapades två sh-skript, som, när de väljs , ger samma SHA1-hashsumma, men fungerar annorlunda.
Som du kan se är skillnaden mellan dessa två skript bara i de första blocken på 512 bitar, som kommenteras ut skräp. Men innehållet i dessa block används sedan i if -villkoret , så skripten beter sig annorlunda när de körs. Sådana filer kan användas av skaparen med uppsåt.
Bakdörrar kan bäddas in inte bara i mjukvara utan också i hårdvara. Sådana bakdörrar kan användas av tillverkare av hårdvara för att bädda in skadliga funktioner i den i produktionsstadiet.
Hårdvarubakdörrar har ett antal fördelar jämfört med mjukvaru:
Ett exempel på en hårdvarubakdörr skulle vara en skadlig BIOS -firmware . Enligt studier [12] kan sådan firmware byggas på basis av gratis firmware Coreboot [13] och SeaBIOS . Coreboot är inte ett fullfjädrat BIOS: det är bara ansvarigt för att upptäcka hårdvaran som är tillgänglig på maskinen och överföra kontrollen till själva "BIOS-stoppningen", som kan användas som SeaBIOS modifierad av en angripare för att passa hans behov .
Principen för drift av skadlig firmware kan kort beskrivas enligt följande: omedelbart efter att den infekterade datorn har slagits på, även innan operativsystemet laddas, försöker den upprätta en anslutning till angriparens server via Internet. Om ett sådant försök lyckas laddas något bootkit ned på distans , vilket i sin tur ger angriparen möjlighet att utföra skadliga åtgärder med den infekterade datorn: datastöld eller fjärrkontroll . Om försöket att ansluta till Internet misslyckas, laddas operativsystemet normalt. En otvivelaktig fördel för en angripare är att den modifierade firmware i sig inte innehåller någon skadlig kod, och bootkits är svåra att upptäcka.
Skadliga program | |
---|---|
Infektiös skadlig programvara | |
Dölja metoder | |
Skadlig programvara för vinst |
|
Genom operativsystem |
|
Skydd |
|
Motåtgärder |
|