Backdoor , tajný vchod (z anglického back door - "zadní vrátka", doslova "zadní vrátka") - chyba v algoritmu, který je do něj záměrně zabudován vývojářem a umožňuje neoprávněný přístup k datům nebo vzdálené ovládání operačního systému a počítač jako celek [1] .
Hlavním účelem zadních vrátek je skrytě a rychle získat přístup k datům, ve většině případů šifrovaným a chráněným. Například do šifrovacího algoritmu lze zabudovat zadní vrátka pro následné odposlechy zabezpečeného kanálu útočníkem [1] [2] .
Tento generátor byl vyvinut NSA a standardizován jako kryptograficky silný generátor pseudonáhodných čísel americkým Národním institutem pro standardy a technologie NIST v roce 2006. Již v roce 2007 však nezávislí výzkumníci navrhli, že by do tohoto algoritmu mohla být zabudována zadní vrátka. [3] [4] [5]
Ukázka fungování algoritmu podle specifikace NSA [6] :
Tento algoritmus používá eliptické křivky. - generátor skupiny bodů na eliptické křivce, - bod na eliptické křivce - normou definovaná konstanta, jak byla zvolena, není známo. Parametry samotné křivky jsou rovněž stanoveny normou.
Princip fungování:Křivka rovnice
lze přepsat do tvaru a zapsat následující výrazy pro fungování algoritmu:
.. _ — vnitřní stav generátoru v aktuálním kroku - vnitřní stav generátoru v dalším kroku — výstup generátoru v aktuálním kroku Údajná zadní vrátka:Protože je prvočíslo , pak existuje číslo takové, že . Hledání je výpočetně obtížný problém diskrétního logaritmu na eliptické křivce, pro který v současné době neexistují žádné účinné algoritmy. Pokud ale předpokládáme, že útočník zná , pak dostaneme následující útok: If je další výstup generátoru a pokud existuje takový , že , pak bod leží na křivce a platí pro něj následující rovnost: . Když znáte číslo , můžete vypočítat: . Útočník, který číslo zná, tak může nejen vypočítat další výstup generátoru, ale také rychle vyčíslit všechny možné vnitřní stavy generátoru a obnovit jeho počáteční vnitřní stav. Podle nezávislých studií [2] [7] stačí se znalostí pouhých 30 bajtů výstupní sekvence generátoru k obnovení jeho počátečního vnitřního stavu prostým výčtem hodnot. Podle výzkumníků lze takovou zranitelnost považovat za zadní vrátka.
Výzkumníci Yandexu objevili zranitelnost v implementaci protokolu TLS v jednom ze softwarových produktů společnosti Apple [2] . Podle jejich názoru se tato chyba může ukázat jako zadní vrátka záměrně zabudovaná do algoritmu jedním z vývojářů.
Část kódu s chybou: statický DSStatus SSLVerifySignedServerKeyExchnge (....) { DSStatus err ; .... if (( err = SSLHashSHA1 . update ( & hashCtx , & signatureParams )) != 0 ) goto fail ; goto fail ; if (( SSHashSHA1 . final ( & hashCtx , & hashOut )) != 0 ) goto fail ; .... selhání : .... návrat err ; }Jak vidíte, po prvním příkazu if jsou dva řádky goto fail a druhý řádek se provede vždy, bez ohledu na výsledek příkazu if . Proto je postup ověření certifikátu neúplný. Útočník se znalostí této chyby zabezpečení by mohl certifikát podvrhnout a být ověřen. To mu umožní zorganizovat útok typu man-in-the-middle , čímž naruší zabezpečené spojení mezi klientem a serverem. Vědci, kteří tuto chybu v implementaci objevili, nemohou s jistotou říci, zda šlo o úmysl nebo náhodu. Je docela možné, že se jedná o zadní vrátka zabudovaná do algoritmu jedním z vývojářů.
Mnoho moderních kryptografických algoritmů používá při své práci určitou sadu vnitřních konstant. Tyto konstanty jsou zpravidla specifikovány normou a jsou voleny z důvodu kryptografické odolnosti vůči současně známým typům kryptoanalýz . Ale výběr konstant při standardizaci algoritmu může být teoreticky použit vývojáři se zlým úmyslem: například k vytvoření určitých zranitelností a zadních vrátek v algoritmu.
Jako takový příklad použití konstant můžeme uvést nedávné výzkumné práce na téma tzv. „malicious hashing“ [8] [9] , kde se autorům podařilo sestavit kolize pro kryptografickou hashovací funkci SHA1 úpravou jeho kulaté konstanty. Všimněte si, že útok navržený autory studie není útokem na samotnou hashovací funkci SHA1 , umožňuje najít kolize pouze v případě, že lze změnit zaokrouhlovací konstanty a pouze pro určité typy souborů.
Stručný popis SHA1 :SHA1 je moderní kruhová hashovací funkce. Hašovací algoritmus je následující:
Účelem uvažovaného útoku je najít takové konstanty a takové zprávy a , že . Tento útok modifikuje pouze prvních 512 bitů (blok 1) zpráv, pro které je nutné vytvořit kolizi. Algoritmus je založen na známém rozdílovém útoku na SHA1 navrženém v roce 2005 [10] [11] a má složitost pořadí operací, což ztěžuje jeho implementaci v praxi. Proto nebyly dosud nalezeny žádné skutečné kolize pro SHA1 .
Ale v případě vytvoření škodlivé verze SHA1 může útočník měnit nejen bloky zpráv a , ale také zaokrouhlovat konstanty . Podle výzkumu [9] to značně snižuje složitost útoku na pořadí operací a dělá z konstrukce takových kolizí skutečný úkol, který lze provádět na více počítačích. Autorům studie se tak podařilo vybudovat jednoblokové kolize pro mnoho známých typů souborů.
Kolize jednoho bloku:a - první bloky zpráv (512 bitů), které se od sebe liší, ale dávají stejný hash součet - zbytek obsahu, který je stejný pro oba soubory Příklad použití škodlivého hashování k vytvoření zadních vrátek
Pomocí popsaného útoku byly vytvořeny dva sh-scripty, které při výběru dávají stejný hash součet SHA1, ale fungují jinak.
Jak vidíte, rozdíl mezi těmito dvěma skripty je pouze v prvních blocích 512 bitů, které jsou zakomentovány jako smetí. Ale obsah těchto bloků je pak použit v podmínce if , proto se skripty při spuštění chovají jinak. Takové soubory může tvůrce použít se zlým úmyslem.
Zadní vrátka lze zabudovat nejen do softwaru, ale také do hardwaru. Taková zadní vrátka mohou výrobci hardwaru použít k tomu, aby do nich ve fázi výroby vložili škodlivé funkce.
Hardwarová zadní vrátka mají oproti softwarovým řadu výhod:
Příkladem hardwarových zadních vrátek může být škodlivý firmware BIOSu . Podle studií [12] lze takový firmware postavit na bázi bezplatného firmwaru Coreboot [13] a SeaBIOS . Coreboot není plnohodnotný BIOS: zodpovídá pouze za detekci hardwaru dostupného na stroji a předání řízení samotnému „vyplňování BIOSu“, který může být použit jako SeaBIOS upravený útočníkem podle jeho potřeb .
Princip fungování škodlivého firmwaru lze stručně popsat takto: okamžitě po zapnutí infikovaného počítače, ještě před načtením operačního systému, se pokusí navázat spojení se serverem útočníka přes internet. Pokud je takový pokus úspěšný, stáhne se vzdáleně nějaký bootkit , což útočníkovi zase poskytne příležitost provést s infikovaným počítačem škodlivé akce: krádež dat nebo dálkové ovládání . Pokud se pokus o připojení k internetu nezdaří, operační systém se načte normálně. Nepochybnou výhodou pro útočníka je, že upravený firmware sám o sobě neobsahuje žádný škodlivý kód a bootkity se obtížně odhalují.
Škodlivý software | |
---|---|
Infekční malware | |
Metody skrývání | |
Malware pro zisk |
|
Podle operačních systémů |
|
Ochrana |
|
Protiopatření |
|