Nyílt forrású adatok elemzésével törtek fel bitcoin-tárcákat
Bekövetkezett az, amit hosszú éveken keresztül elképzelhetetlennek tartottak a kriptotárcák tulajdonosai: kutatóknak nemrég sikerült rést találniuk a tárcákat védő pajzson, tisztán nyílt forrású adatok elemzésével.
A Kudelski Security kutatóinak egy új típusú támadással sikerült feltörniük bitcoin- és ethereum-tárcákat, méghozzá egy olyan eljárással, ami az egyik legmodernebb aszimmetrikus kulcsú kriptográfiai algoritmus egy sajátosságát használja ki.
Habár Satoshi Nakamoto tárcája nincs a kutatók által feltörtek között, mégis aggasztó azt látni, hogy egy egyszerű szoftverhiba milyen könnyen sérülékennyé tehet még egy olyan modern, méltán népszerű titkosítási eljárást is, mint az ECDSA. A tisztán nyílt forrású adatok elemzése révén olyan gyengeségeket fedtek fel az algoritmus gyakorlati használatában, ami a biztonságos internetes kommunikációt, a nyilvános kulcs infrastruktúrák és a kriptovaluta-tranzakciókat is fenyegethetik.
Az ok szokás szerint: szoftverhiba
Ahogy a titkosítási algoritmusok elleni támadások történetében már oly sok alkalommal előfordult, a támadás eredendő oka nem az algoritmus sebezhetősége, hanem az a tény, hogy az algoritmust kellő szakismeret és körültekintés nélkül használták és használják.
CI/CD-vel folytatódik az AWS hazai online meetup-sorozata! A sorozat december 12-i, ötödik állomásán bemutatjuk az AWS CodeCatalyst platformot, és a nyílt forráskódú Daggert is.
Bizonyos kriptográfiás műveletek elvégzésekor kulcsfontosságú, hogy kriptográfiai felhasználásra alkalmas “minőségű” véletlen számokat használjunk. llyen műveletek például a jelszavak tárolása (salted hash) vagy a kriptográfiai kulcsok generálása szerverek vagy kliensek hitelesítéséhez. A digitális aláírások generálása, ami számos egyéb felhasználás mellett a kriptovaluták tranzakcióinak ellenőrzéséhez szükséges szintén kriptográfiailag erős véletlen számokat igényel. Ezek hiányában kapcsolat jön létre a véletlen számok és az aláíró kulcs privát része között, ez a kapcsolat pedig felhasználható arra, hogy egy támadó visszafejtse ez aláírókulcs privát részét az aláírások birtokában. A privát kulcs birtokában pedig bármely, a tárcához kapcsolódó tranzakció végrehajtható, vagyis akár a tárca egyenlege tetszőleges másik tárcára átutalható.
Az ötlet nem új, de a módszer annál inkább
Bár az alkalmazott módszer új, a támadás alapötlete nem teljesen az. A megfelelő minőségű véletlen számok hiánya súlyos sérülékenységeket okozott már a múltban is. 2002-ben például a Debian Linux disztribúció – és annak különböző változatai – által tartalmazott OpenSSL verziókban drámaian csökkent a generált véletlen számok entrópiája.
A probléma által érintett OpenSSL verziók által generált SSH, VPN és X.509 kulcsok sebezhetővé váltak és az ilyen kulcsokat használó szolgáltatások mindaddig azok is maradtak, amíg a kulcs újragenerálása meg nem történt. 2010-ben egy fail0verflow nevű csoport feltörte azt az ECDSA kulcsot, amit a Sony a PlayStation 3 játékkonzol szoftvereinek aláírására használt. Az támadás alapötlete gyakorlatilag ugyanaz volt, mint most, nevezetesen, hogy a Sony a digitális aláírások előállításához szükséges véletlen értéket (nonce) többször is felhasználta különböző szoftvereket digitális aláírása során. Az aktuális támadás újdonsága a korábbiakhoz képest abban rejlik, hogy kihasználja a digitális aláírások generálásához használt véletlen értékek esetleges összefüggéseit. Ez annyit tesz, hogy ha amennyiben a nonce értékeket nem kriptográfiailag biztonságos véletlen számgenerátorral, hanem gyenge pszeudóvéletlen számgenerátorral (PRNG) hozták létre, akkor ez lehetővé teszi a támadónak az aláírókulcs privát részének visszafejtését.
Nyílt forrású adatok speciális alkalmazása
Ahhoz, hogy a digitális aláírásokból sikeresen vissza lehessen állítani az aláíró privát kulcsát három előfeltételnek kell teljesülnie. Az első, hogy a digitális aláírás létrehozásakor használt véletlenszerű értéknek egy kriptográfiai használatra alkalmatlan, pszeudovéletlen-generátorból (PRNG), kell származnia. A második feltétel, hogy adott legyen egy PRNG-ből származó véletlen számok használatával generált digitális aláírások gyűjteménye. A harmadik feltétel pedig az, hogy az aláírások időben rendezhetőek legyenek, vagyis, hogy tudjuk, melyik aláírás melyik után melyik került létrehozásra.
Joggal feltételezhető, hogy vannak olyan szoftver implementációk, melyek kriptográfiai felhasználásra nem alkalmas véletlenszámokat használnak a digitális aláírások előállításakor, vagyis a kérdés igazából az, hogy hol találhat egy támadó egymást követő és rendezett aláíráslistát?
Több helyen is. A digitális aláírások részei minden kriptográfiai protokollnak, ezért nyílt forrásokból jól gyűjthetők.
Az egyik legjobb példák a kriptovaluták, ahol a tranzakciókat digitális aláírásokkal hitelesítik. Ezeket az aláírásokat közzé is kell tenni, lévén a felek a tranzakciókat ezen aláírások segítségével hitelesíthetik. A kriptovaluták blokkláncai támadói szempontból tulajdonképpen nem mások, mint hatalmas digitális aláírás-gyűjtemények. A Bitcoin blokkláncából a kutatók például 763 millió egyedi aláírást gyűjtöttek össze, amik 424 millió egyedi nyilvános kulccsal hoztak létre. Bár az esetek többségében egy kulcsot csak néhány aláírás létrehozására használtak, de milliónyi olyan kulcs is volt, melyeket legalább négy aláírást generálásához használtak fel, ami a támadáshoz szükséges minimális előfeltétel.
Valaki megelőzte a kutatókat
A kutatók mintegy 67 órán át futtaták algoritmusukat a digitális aláírások feltörésére, melynek becsült költsége százezer forint, eredménye pedig 762 feltört tárca volt. Úgy tűnt azonban, hogy valaki esetleg megelőzhette őket, hiszen minden feltört tárca egyenlege nulla volt, amiből a kutatók azt a következtetést vonták le, hogy a tárcákat már előttük feltörhették.
Korábban a tárcák egyenlegének összege 484 bitcoin volt, ami több, mint négymilliárd forintot jelent a mai árfolyamon, bár a bitcoin árfolyamának csúcsán ugyanez a mennyiség mintegy tízmilliárd forintot jelentett volna. Joggal merül fel a kérdés, hogy hová tűnhetett a 484 bitcon? A kutatók a feltört tárcák utolsó tranzakcióit megvizsgálva 466 különböző címzettet azonosítottak. A legnépszerűbb címzetthez összesen bő hatszázmillió, míg az első 5 címzetthez összesen csaknem 1,25 milliárd forint értékű bitcoin került. A kiürített tárcák kapcsán kevesebb mint 144 bitcoin sorsát tudták nyomon követni, ami jócskán elmarad a teljes összegtől, de biztosan megérte a százezer forintnyi befektetést.
További gyanakvásra adott okot, hogy a kiürített tárcák leggyakoribb címzettjének tárcájáról számos tranzakció indult, 0,5, illetve 1 bitcoint küldtek több címzetthez, bár a számla egyenlege még mindig 63,5 bitcoin. A kutatók nyilvános beszélgetéseket találtak, amik olyan számlákról szóltak, melyeket ismételt nonce értékek kihasználásával söpörtek tisztára. Egy fórumtag, johoe azt állította, hogy 135 tárcát sikerült ezzel a technikával kompromittálnia. Bár 82 tárcát már korábban feltörtek és kiürítettek, még így is 7 bitcoint gyűjtött össze az általa feltört számlákból, amit hajlandó a tulajdonosnak visszajuttatni, amennyiben azok képesek tulajdonosi mivoltukat igazolni. A kutatók az Ethereum tárcákon is elvégeztek egy, a korábbihoz hasonló elemzést, miután több mint 1,7 milliárd digitális aláírást gyűjtöttek, de az alacsony költség-haszon arány miatt az adatok feldolgozását 22%-os szinten felfüggesztették, mivel mindössze 2 tárcát sikerült a feldogozott adatok segítségével kompromittálniuk.
Még mindig valós a probléma?
Csupán a Bitcoin tárcákkal kapcsolatos eredményeket véve alapul azt lehetne mondani, hogy ez a sérülékenység ma már nem feltétlenül jelent problémát, hiszen a kompromittálható digitális aláírások évekkel ezelőtt keletkeztek, és persze az sem lehetetlen, hogy mindegyikük ugyanazon szoftver egy olyan változatával került létrehozásra, ami egy súlyos hibát tartalmazott, amit idő közben már javítottak.
A digitális aláírások nem azért voltak kompromittálhatóak, mert a létrehozásuk során álvéletlen szám generátort használtak volna, hanem azért, mert többször is használtak egy véletlen számot, ami egy már korábban is ismert hiba. Figyelembe véve ugyanakkor, hogy a digitális aláírásokat milyen széles körben használják, elképzelhető, hogy más felhasználási területeken, mint például kriptográfiai protokollok implementációi, szintén jelen lehet. Ugyanakkor azt is igaz, hogy a sebezhetőség kihasználásához a támadónak egy, a hibában potenciálisan érintett szerverről egymást követő digitális aláírásokat kell tudnia megszerezni, ami nem triviális feladat egy nagyforgalmú szerver esetében, mivel a támadón kívül sok más ügyfél csatlakozik párhuzamosan az adott szerverhez.
Mégis, ha egy támadó képes ezen feltételnek megfelelni, akkor egy érintett szerver esetén ez azt jelenti, hogy a szerver tanúsítványa kompromittálódott anélkül, hogy erre a szerveren bármi különösebb jel utalt volna. Azzal együtt, hogy a tanúsítványok visszavonásának ellenőrzése az X.509 egyik leggyengébb pontja, különösen problematikus, hogy egy ilyen egyszerűen elkövethető hiba az implementációban a tanúsítványok kompromittálódását okozhatja. A helyzet még aggasztóbb lehetne, ha egy hasonló hiba tanúsítványok kibocsátása során merülne fel, hiszen az a tanúsítványkiadó hitelességét veszélyeztetné, ami nehezen belátható következményekkel járhatna. Bár ez termesztésen csak feltételezés.