A szoftveres pénztárcák biztonsági modelljéről | Főkönyv

A szoftveres pénztárcák biztonsági modelljéről | Főkönyv

Forrás csomópont: 2671485

A pénztárcáknak két elterjedt típusát különböztethetjük meg: szoftveres és hardveres pénztárcákat. Ugyanazt a funkciót töltik be, de más módon. A szoftveres pénztárcák használata egyszerűbbnek tekinthető: egyetlen program elegendő a tranzakciók létrehozásához, érvényesítéséhez és aláírásához. Szoftvertárcánál nem szükséges a tranzakciót a szoftveren létrehozni és hardvereszközön megerősíteni.

Két héttel ezelőtt, Tiltott történetek célzott támadást mutatott be emberek ezrei ellen szerte a világon. Ez a támadás Android és iOS biztonsági réseit használta ki az NSO Group: Pegasus által kifejlesztett kémprogramok telepítésére. Ez a rosszindulatú program képes figyelni az eszköz teljes tevékenységét, és kiszivárogtatni a személyes adatokat: SMS-ek, WhatsApp és Signal beszélgetések, telefonhívások stb. Ez a cikk elmagyarázza, hogyan tudná egy ilyen rosszindulatú program ilyen körülmények között kibontani az összes a szoftveres pénztárcák titkait, valamint a mobiltelefonok és az asztali számítógépek szoftveres pénztárcái közötti biztonsági szempontból különbségeket.

Ez a cikk nem túl technikai jellegű. A viszonylag egyszerűség érdekében csak az alapvető funkciókat tárgyaljuk.

A titkok védelme

Mit tárol a kriptotárca?

A pénztárcák valójában nem tárolják a felhasználók kriptovalutáit: csak azokat a titkokat, nevezetesen a privát kulcsokat tárolják, amelyek lehetővé teszik a kriptovaluták elérését és azok elköltésének lehetőségét. Ezek a privát kulcsok többnyire ECC (elliptic curve cryptography) privát kulcsok, amelyek a blokklánctól függően különböző görbéken vannak. A leggyakoribb görbék a secp256k1 (Bitcoin, Ethereum…), az Ed25519 (Monero) vagy a BLS12-381 (Ethereum 2).

Ezeket a kulcsokat tranzakciók aláírására, és általában a blokklánc-eszközökkel való interakcióra használják.

A kulcsok tárolása a pénztárca típusától függ: determinisztikus vagy nem. A hierarchikus determinisztikus (HD) pénztárca lehetővé teszi kulcsfa létrehozását egyetlen fő titokból, amelyet magnak neveznek (vö. BEEP44). Ez a mag gyakran a felhasználó által véletlenszerűen generált vagy kiválasztott 12, 18 vagy 24 szóból álló mnemonikus sorozatból származik (vö.BEEP39). Ezek a mnemonikák lehetővé teszik a tárolandó kulcsok számának korlátozását: bármikor újraszámíthatók a magból. A HD pénztárcák csak ezt az emlékeztetőt vagy a magot tárolják.

A nem determinisztikus pénztárcák minden használathoz új kulcsot generálnak, és mindegyiket tárolniuk kell. A nem determinisztikus pénztárcákat nem lehet könnyen áttelepíteni másik pénztárcára, mivel a biztonsági másolatok nem kompatibilisek.

A pénztárca fő biztonsági jellemzői a titkok megfelelő előállítása, tárolása és felhasználása. A különböző típusú fenyegetésekkel szemben különböző biztonsági szintek léteznek:

  • Védelem a „gonosz szolgálólány” támadásai ellen: A pénztárcához ideiglenes hozzáféréssel rendelkező támadónak nem szabad egy hátsó ajtót beépíteni a pénztárcába, amely lehetővé teszi a PIN-kód vagy a jelszóvédő titkok ellopását.
  • Biztonságos kriptográfiai anyagok: A pénztárca által generált kulcsok és nonce soha nem lehetnek kiszámíthatóak. Továbbá a titkok (kivéve a mag) ismerete, amely egy adott időpontban keletkezett, nem engedheti meg előre megjósolni a jövőben keletkező titkot.
  • Nyugalmi védelem: Ha a támadó egy szoftvertárca állandó adatait szerzi meg, nem tudja kibontani a kulcsokat.
  • Védelem titkos használat során: Amikor a pénztárca fel van oldva, a kulcsokhoz nem férhet hozzá támadó vagy rosszindulatú program.
Hardver pénztárcák

A hardveres pénztárca biztonsági modellje ezeket a biztonsági fenyegetéseket kívánja elkerülni. A hardveres pénztárcák tervezésüknél fogva védelmet nyújtanak a rosszindulatú programok ellen. Ezek független eszközök, amelyek önállóan írják alá a tranzakciókat. A kriptográfiai anyagok mindig az eszközben maradnak, és soha nem küldik el azokat a szoftveralkalmazásokat, amelyekkel kommunikálnak. A kommunikációs felület mindig egyszerű, ami drasztikusan csökkenti a támadási felületet. Lehet USB, Micro SD vagy kamera + képernyő (QR kódon keresztül), vagy Bluetooth Low Energy.

Ezenkívül a hardveres pénztárcák közvetlenül az eszközbe ágyaznak be egy képernyőt, amely lehetővé teszi a felhasználó számára, hogy ellenőrizze, milyen műveleteket hajt végre, amikor titkos kulcsaival kommunikál. Ezek a kézi eszközök ellenőrzései nagyon hatékony ellenintézkedést jelentenek a számítógépen/mobilon található rosszindulatú programok ellen. Ahol a számítógépen/mobileszközön lévő rosszindulatú programok hozzáférhetnek a titkokhoz (seed vagy privát kulcsok), vagy akár címeket vagy összegeket cserélhetnek/módosíthatnak, amikor a felhasználó tranzakciót hajt végre, ez hardveres pénztárcával nem lehetséges.

A hardveres pénztárcákat úgy tervezték, hogy megvédjék a „gonoszlány” támadásait és a fizikai hozzáféréssel rendelkező támadókat. A hardveres pénztárcától függően eltérő biztonsági szinttel rendelkeznek, de minden esetben úgy tervezték, hogy védelmet nyújtsanak ezekkel a fenyegetésekkel szemben. A Ledger Nano fenyegetési modellek részletes leírása megtalálható itt.

Szoftvertárcák

A szokásos szoftveres pénztárcák szokásos eszközökkel védik a titkokat: az operációs rendszer biztonsági mechanizmusaival, amelyen futnak, és néha PIN-kódon vagy jelszón alapuló hozzáférés-vezérléssel.

A következőkben az asztali (Windows, macOS, Linux) pénztárcákat és a mobiltárcákat vesszük figyelembe. A köztük lévő fő különbségek leginkább az operációs rendszer által kínált biztonsági mechanizmusokon alapulnak.

Szoftvertárcák a számítógépen

Számos népszerű pénztárca, mint például az Electrum, az Exodus, az Atomic vagy a Bitcoin core fut a számítógépeken.

Számítógépen az operációs rendszer által kínált biztonsági mechanizmusok a pénztárca-folyamatok más folyamatoktól való elkülönítésére korlátozottak. A legtöbb alkalmazást ugyanaz a felhasználó futtatja, és az alkalmazások más alkalmazások adatait is beolvashatják.

Ezeknek a szoftveres pénztárcáknak a biztonsága elsősorban az őket védő jelszó biztonságán múlik, valamint azon, hogy az operációs rendszeren nem futnak kártevők (amit elég nehéz garantálni, lásd a Pegasus-szal kapcsolatos friss híreket).

A legtöbb esetben a magot egy titkosított, jelszóval védett tárolóban tárolják. Az egyszerű támadás abból áll, hogy egy rosszindulatú program vagy egy távoli adminisztrációs eszköz lekéri ezt a titkosított tárolót, és elküldi a támadónak. Ezután a jelszót nyers erővel vagy a. használatával szerezheti be keylogger.

Abban az esetben, ha a támadó csak a titkosított tárolóhoz tud hozzáférni (a támadó talál egy pénztárcát tartalmazó USB-kulcsot, vagy rosszindulatú programot telepít a számítógépére, de az áldozat soha nem nyitja meg a pénztárca alkalmazást), a támadónak brutálisan ki kell kényszerítenie a jelszót.

A legtöbb jelszó igen rossz. Több milliárd jelszó szivárgott ki az interneten, és sokan hajlamosak arra, hogy több szolgáltatáshoz újra felhasználják jelszavaikat. A kész eszközök lehetővé teszik a kriptovaluta pénztárcák jelszavainak lekérését, mint pl btcrecover or hashcat. A jelszavak összetettek lehetnek, de minden pénztárca mögött valódi pénz rejlik, ezért a támadók nem haboznak erőforrásokat fektetni az ilyen jelszavak feltörésére.

A jelszavak biztonságának megőrzése érdekében két alapvető biztonsági elv a jelszókezelő használata, és a jelszavak soha nem használható fel más célokra.

A szoftveres pénztárcákat leginkább fenyegető veszélyek a dedikált rosszindulatú programok és a lopók, amelyeket kifejezetten az Ön pénzének elszívására fejlesztettek ki. Az ilyen rosszindulatú programok, mint például a KPOT vagy ElectroRAT, még a jelszavát sem kell bruteforcezni: közvetlenül rögzíthetik azt, amikor beírja, dekódolja a pénztárca konfigurációs adatait, és kiszűrheti a magot.

Íme egy ehhez a cikkhez kifejlesztett játékalkalmazás, amely az Electrum pénztárcát célozza meg (bár lehetett volna egy másik szoftveres pénztárca is). Olyan rosszindulatú programot szimulál, amely ellopja a felhasználói jelszót, amikor azt az áldozat beírja. A jelszó ezután a pénztárca adatainak visszafejtésére és a mag megjelenítésére szolgál:

Amint látja, még ha a jelszó összetett is, az alkalmazás képes lekérni, miközben közvetlenül a memóriába szippantja.

Ez a példa nagyon hasonlít a legutóbbihoz .SCR rosszindulatú program kriptovaluták ellopására használt kampányok. A bűnözők social engineering technikákat alkalmaztak, hogy rávegyék a felhasználókat egy rosszindulatú képernyővédő letöltésére. Ez a képernyővédő valójában információkat lopott a számítógép áldozatától, beleértve a pénztárcával és a kriptovaluta cseréjével kapcsolatos információkat.

Befejezésül a számítógépeken futó szoftveres pénztárcákról:

  • A legtöbb esetben a számítógépeken futó szoftveres pénztárcák jelszóval védik a felhasználó magját.
  • Ezen pénztárcafájlok hozzáférés-szabályozása elsősorban a számítógép biztonságán múlik. A gyakorlatban nehéz megvédeni a számítógépeket a rosszindulatú programoktól, és ahogy a kriptovaluták általánossá válnak, a pénztárcák elleni támadások egyre kifinomultabbak lesznek.
  • Az ilyen szoftveres pénztárcák használata a digitális eszközök védelmére nem jó ötlet. Bármely speciális rosszindulatú program képes lesz megszerezni a pénztárca fájljait és megtalálni a jelszavakat offline módban, vagy lekérheti a jelszót egy keyloggeren keresztül.
Szoftvertárcák okostelefonon

Az Android és iOS okostelefonok alapértelmezés szerint olyan biztonsági funkciókat kínálnak, amelyeket nem használnak széles körben az asztali operációs rendszereken.

A mobil operációs rendszerek az alkalmazások és a felhasználók adatainak védelmét kínálják. Konkrétan, az alkalmazások homokozója kötelező minden alkalmazáshoz. Ez nem így van például a Windows rendszeren: alapértelmezés szerint bármely alkalmazás hozzáférhet a felhasználói adatokhoz.

Ezért egy rosszindulatú alkalmazás nem tud adatokat olvasni egy másik alkalmazásból, kivéve, ha:

  • Sebezhetőséget talál az alkalmazáson.
  • Vagy sikerül kiterjeszteni a jogosultságokat, például kihasználva a kernel sebezhetőségét, lehetővé téve, hogy root hozzáférést kapjon a rendszerhez.

Sajnos vannak ilyen támadások. Sokkal egyszerűbbek az Android és iOS elavult verzióin, valamint a régebbi vagy olcsó eszközökön, ahol a harmadik féltől származó kód gyakran kevésbé biztonságos.

Egy naprakész operációs rendszeren ezek a támadások nehezebbek, de távolról sem megvalósíthatatlanok. Például Ian Beer mutatott egy rendkívül lenyűgöző nulla kattintásos támadás az iOS 13.5 rendszeren 2020 decemberében. Guang Gong bemutatott egy kihasználó lánc 2020 júniusában a Qualcomm-alapú Android-eszközök széles skálájának távoli rootolására. És két héttel ezelőtt Tiltott történetek nyilvánosságra hozta, hogy az NSO Group egy kihasználási láncot használt a legutóbbi iOS és Android eszközök megcélzására, 0 napos sebezhetőséget használva.

A kevésbé kifinomult támadók használhatják a helyi sebezhetőségeket, amelyek lehetővé teszik számukra, hogy pénztárcaadatokat vonjanak ki egy rosszindulatú alkalmazásból. A sebezhetőségi brókerek, például a Zerodium fizetnek akár $ 200,000 Android és iOS rendszeren a root jogosultság kiterjesztésére, de akár 1,500,000 XNUMX XNUMX USD-ig távoli támadások esetén.

Tanulmányoztunk néhány Android/iOS pénztárcát. Biztonságuk magától az alkalmazástól, de az alapul szolgáló operációs rendszer biztonsági funkcióitól is függ. Természetesen, ha az operációs rendszer biztonsága megszűnik, az alkalmazás már nem biztonságos

A vetőmag védelmére általában két módszert alkalmaznak:

  • Jelszavas védelem – a pénztárca adatait a felhasználó által megadott jelszó védi. A kialakítás ugyanaz, mint az asztali pénztárcáké. A gyakorlatban az adatokat nehezebb kinyerni, mint a számítógépről, mivel a rosszindulatú alkalmazásokból az alkalmazásadatok lekérése technikailag nehezebb, a fent kifejtett okok miatt. A jelszó visszakeresése azonban az adatok ellopása után a gyakorlatban egyszerűbb: a bonyolult jelszavak mobiltelefonon történő megadása unalmas, ezért a felhasználók hajlamosak egyszerűbbet választani. Ezen túlmenően a mobileszközökön használt kulcs-levezető mechanizmusok (amelyeket jelszóból kulcsot hoznak létre) általában egyszerűbb feltörni, mivel teljesítményük miatt gyakran könnyebbek.
  • Coinomi és a Metamask az ilyen pénztárcák példája.

A következő videóban egy másik, ehhez a cikkhez kifejlesztett játékalkalmazást mutatunk be. Ez egy hamis Bitcoin ticker widgetnek álcázott rosszindulatú program. A rosszindulatú programok kihasználják a javítatlan eszköz ismert sebezhetőségét, hogy root hozzáférést kapjanak az eszközhöz, és a titkosított magot egy távoli szerverre szűrjék. A szerver ezután brute erőlteti a jelszót a seed visszafejtéséhez.

Ez a módszer nem kifejezetten a pénztárcára vonatkozik. Bármilyen jelszóval védett pénztárcához (többé-kevésbé) könnyen illeszthető. Itt van ugyanez a példa a Coinbase Wallet-tal:

[Beágyazott tartalmat]

  • Az Android Keystore-on (vagy iOS Keychain-en) alapuló biztonság – Ebben az esetben a pénztárca adatait az Android Keystore-ban (iOS Keychain) tárolt titkosítási kulccsal titkosítják. Ezeket a szolgáltatásokat eredetileg a titkosítási kulcsok biztonságos tárolására tervezték, és sok alkalmazás használja őket olyan kulcs létrehozására, amely titkosítja az összes érzékeny felhasználói adatot. A Keystore-t használó alkalmazások a következő mechanizmust hajtják végre:
    • Az alkalmazás arra kéri a Keystore-t, hogy hozzon létre egy titkosítási kulcsot egy adott azonosítóhoz. A Keystore generálja a kulcsot és biztonságosan tárolja.
    • Amikor az alkalmazás titkosítani vagy visszafejteni akar egy blobot, elküldi a blobot a kulcsazonosítóval együtt a kulcstárolóba.
    • Végül a kulcstároló ellenőrzi, hogy az alkalmazás ténylegesen jogosult-e a kulcs használatára, és visszaküldi a kimeneti adatokat az alkalmazásnak.

Ennél a modellnél az alkalmazás nem ismerheti a kulcs értékét, de tudja használni. A kulcshoz további hozzáférési vezérlők is rendelhetők: például a kulcshoz való hozzáférés feltétele egy felhasználói hitelesítés (PIN-kód vagy feloldási minta kérése).

Ez a mechanizmus további biztonságot nyújthat a jelszó alapú védelemhez képest. Valójában a legújabb telefonokon a Keystore-t egy Trusted Execution Environment (TEE) vagy néha egy Secure Element támogatja.

Ez azt jelenti, hogy egy root jogosultsággal rendelkező támadó nem tud titkosítási kulcsokat kinyerni a kulcstárolóból. Ennek ellenére képesek lesznek a Keystore-t dekódoló orákulumként használni, és bármilyen kívánt adatot titkosítani vagy visszafejteni.

A Keystore titkosítást, de aláírási szolgáltatásokat is kínál. Tehát egy pénztárca megvédheti a titkosítási kulcsait, megnehezítve azok kinyerését? A válasz sajnos nem: a szoftveres pénztárcák nem használják a Keystore-t a tranzakciók aláírásáraés a privát kulcsokat az alkalmazás mindig egyszerű szöveggel kezeli.

Ennek egyszerű oka van: a KeyStore és a KeyChain általános aláírási és titkosítási szolgáltatásokat kínál, de nem támogatja a kriptovalutákban használt kriptográfiát. Például a KeyStore megvalósítja az ECDSA aláírást, de csak a FIPS 186-4-ben (P-224, P-256, P-384 és P-521) meghatározott NIST-görbéken. A Bitcoin egy másik görbét használ, secp256k1, amely még nem támogatott.

Összefoglalva, a Keystore és a Keychain jó védelem titkos és privát kulcsok. Bizonyos biztonságot nyújthatnak az érzékeny adatok titkosításával: a sérülékenységek bizonyos osztályait (például az önkényes fájlolvasást) a Keystore titkosítás kezeli. Ha azonban a root jogosultság eszkalációja nem elegendő a kulcsértékek kinyeréséhez egy hardverrel támogatott kulcstárolóból, akkor elegendő az érzékeny adatok visszafejtése. Az alkalmazást eszközölni képes támadó képes visszakeresni annak titkait.

Befejezésül a mobiltárcákról:

  • Az iOS/Android által biztosított alkalmazások közötti elkülönítési mechanizmus magasabbra teszi a biztonsági lécet a számítógépen futó szoftvertárcához képest. A támadónak először jogosultság-eszkalációra van szüksége, hogy hozzáférjen az alkalmazásadatokhoz. Ez elavult eszközökön megvalósítható. A képzett támadók (Ian Beer egyedül csinálta 6 hónap alatt, de… Ian Beerről van szó) a legutóbbi, javított eszközökön is megtehetik.
  • A kulcsvédelmi szolgáltatások (KeyStore, KeyChain) további biztonsági réteget adhatnak a nyugalmi titkok védelméhez. Mindazonáltal, mivel nem támogatják a kriptográfiai algoritmusokat a kriptovaluta alkalmazásokhoz, a kulcs továbbra is kivonható.
  • A root hozzáféréssel rendelkező támadó minden esetben lekérheti a magot nyugalomban, használat közben, vagy kihasználhatja a felhasználó jogait a tárca ürítésére, a szoftvertárca jósként való használatával.

Íme egy utolsó példa egy játék kémprogramra, amely a Blockchain.com pénztárcáját célozza meg (bár ez sok más pénztárcán is végrehajtható ugyanilyen egyszerűen). Távolról telepíthető, és figyeli a pénztárcát. Miután a felhasználó az ujjlenyomatával hitelesített, a titkosítási kulcs feloldódik, és a pénztárca adatai visszafejtésre kerülnek. A kémprogram arra készteti az alkalmazást, hogy lekérje ezt a titkosítási kulcsot. Ezután kiszűri a kulcsot és a pénztárca adatait egy távoli szerverre:

[Beágyazott tartalmat]

Következtetés

Következtetésképpen a szoftveres pénztárcák különböző biztonsági szintekkel rendelkeznek. A fenyegetési modelljük azonban nem fedi le az operációs rendszeren futó kártevők esetét, jogosultságkiterjesztéssel. Ez a tervezésből fakad: a Wallet alkalmazás nem lehet biztonságosabb, mint az operációs rendszer, amelyen fut.

  • Az iOS/Android által biztosított alkalmazások közötti elkülönítési mechanizmus magasabbra teszi a biztonsági lécet a számítógépen futó szoftvertárcához képest. A támadónak először jogosultság-eszkalációra van szüksége, hogy hozzáférjen az alkalmazásadatokhoz.
  • A kulcsvédelmi szolgáltatások (KeyStore, KeyChain) további biztonsági réteget adhatnak a nyugalmi titkok védelméhez. Mindazonáltal, mivel nem támogatják a kriptográfiai algoritmusokat a kriptovaluta alkalmazásokhoz, a kulcsokat közvetlenül az alkalmazásból kell manipulálni, így korlátozott védelmet kínálnak.
  • A root hozzáféréssel rendelkező támadó minden esetben lekérheti a magot nyugalomban, használat közben, vagy kihasználhatja a felhasználó jogait a tárca kiürítésére, a szoftvertárca jósként való használatával.

Időbélyeg:

Még több Főkönyv