Tarkvararahakottide turvamudelist | Pearaamat

Tarkvararahakottide turvamudelist | Pearaamat

Allikasõlm: 2671485

Saame eristada kahte levinud rahakotti: tarkvara- ja riistvaratasku. Nad täidavad sama funktsiooni, kuid erineval viisil. Tarkvarakotte peetakse lihtsamaks kasutamiseks: tehingute loomiseks, kinnitamiseks ja allkirjastamiseks piisab ühest programmist. Tarkvarakoti puhul ei ole vaja tehingut tarkvaras luua ja riistvaraseadmes kinnitada.

Kaks nädalat tagasi, Keelatud lood avalikustas sihipärase rünnaku tuhandete inimeste vastu üle kogu maailma. See rünnak kasutas Androidi ja iOS-i turvaauke, et installida NSO Group: Pegasuse välja töötatud nuhkvara. See pahavara suudab jälgida kogu seadme tegevust ja välja filtreerida isiklikku teavet: SMS-id, WhatsApp ja Signal vestlused, telefonikõned jne. Selles artiklis selgitatakse, kuidas sellistel tingimustel suudab selline pahavara kogu tarkvara rahakottide saladused ning turvalisuse seisukohast erinevused mobiiltelefonide ja lauaarvutite tarkvarakottide vahel.

See artikkel ei ole väga tehniline. Et see oleks suhteliselt lihtne, käsitletakse ainult põhifunktsioone.

Saladuste kaitsmine

Mida krüptorahakotis hoitakse?

Rahakotid ei salvesta tegelikult kasutajate krüptovaluutasid: need salvestavad ainult saladusi, eriti privaatvõtmeid, mis võimaldavad krüptovaluutadele juurde pääseda ja neid kulutada. Need privaatvõtmed on enamasti ECC (elliptic curve cryptography) privaatvõtmed erinevatel kõveratel, olenevalt plokiahelast. Kõige tavalisemad kõverad on secp256k1 (Bitcoin, Ethereum…), Ed25519 (Monero) või BLS12-381 (Ethereum 2).

Neid võtmeid kasutatakse tehingute allkirjastamiseks ja üldisemalt plokiahela varadega suhtlemiseks.

Nende võtmete säilitamine sõltub rahakoti tüübist: deterministlik või mitte. Hierarhiline deterministlik (HD) rahakott võimaldab luua võtmete puu ühest põhisaladusest, mida nimetatakse seemneks (vt BIP44). See seeme on sageli tuletatud 12, 18 või 24 sõnast koosnevast märguandejadast, mille kasutaja on juhuslikult genereerinud või valinud (vt.BIP39). Need mnemoonikud võimaldavad piirata salvestatavate võtmete arvu: neid saab seemnest igal ajal ümber arvutada. HD-rahakotid salvestavad ainult seda märguannet või seemet.

Mittedeterministlikud rahakotid loovad iga kasutuse jaoks uue võtme ja peavad need kõik salvestama. Mittedeterministlikke rahakotte ei saa kergesti teise rahakotti üle viia, kuna varukoopiad ei ühildu.

Rahakoti peamised turvaelemendid seisnevad nende saladuste õiges genereerimises, säilitamises ja kasutamises. Erinevat tüüpi ohtude vastu on erinevad turvatasemed:

  • Kaitse "kurja neiu" rünnakute eest: Ründaja, kellel on ajutine juurdepääs rahakotile, ei tohi rahakotti lisada tagaust, mis võimaldab varastada PIN-koodi või parooliga kaitsvaid saladusi.
  • Turvaline krüptograafiline materjal: Rahakoti genereeritud võtmed ja nonce ei tohi kunagi olla etteaimatavad. Lisaks ei tohi mingil ajahetkel genereeritud teadmised saladustest (välja arvatud seeme) võimaldada ennustada tulevikus genereeritavat saladust.
  • Kaitse puhkeolekus: Kui ründaja saab tarkvara rahakoti püsivaid andmeid, ei tohi tal olla võimalik võtmeid välja võtta.
  • Kaitse salajase kasutamise ajal: Kui rahakott on lukustamata, ei tohi ründaja ega pahavara võtmetele ligi pääseda.
Riistvara rahakotid

Riistvaralise rahakoti turvamudeli eesmärk on neid turvaohte vältida. Riistvaralised rahakotid kaitsevad oma disainilt pahavara eest. Need on sõltumatud seadmed, mis allkirjastavad tehinguid iseseisvalt. Krüptograafilised materjalid jäävad alati seadmesse ja neid ei saadeta kunagi tarkvararakendusse, millega nad suhtlevad. Suhtlusliides on alati lihtne, mis vähendab drastiliselt rünnakupinda. See võib olla USB, Micro SD või kaamera + ekraan (läbi QR-koodi) või Bluetooth Low Energy.

Lisaks manustavad riistvaralised rahakotid ekraani otse seadmesse, mis võimaldab kasutajal kontrollida toiminguid, mida ta kavatseb teha, kui ta oma salajaste võtmetega suhtleb. Seadmete käsitsi kontrollimine on väga tõhus vastumeede arvutis/mobiilis oleva pahavara vastu. Kui arvutis/mobiilseadmes olev pahavara võib juurdepääsu saladustele (seemne- või privaatvõtmed) või isegi aadresse või summasid vahetada/muuta, kui kasutaja tehingu sooritab, ei ole see riistvaralise rahakoti puhul võimalik.

Riistvaralised rahakotid on loodud ka kaitsma kurja neiu rünnakute ja füüsilise juurdepääsuga ründaja eest. Olenevalt riistvaralisest rahakotist on neil erinev turvalisuse tase, kuid kõigil juhtudel on need loodud nende ohtude eest kaitsmiseks. Ledger Nano ohumudelite üksikasjalik kirjeldus on leitav siin.

Tarkvara rahakotid

Tavalised tarkvararahakotid kaitsevad saladusi tavaliste vahenditega: operatsioonisüsteemi turvamehhanismid, millel need töötavad, ja mõnikord PIN-koodil või paroolil põhinev juurdepääsukontroll.

Järgnevalt käsitletakse lauaarvuti (Windows, macOS, Linux) rahakotte ja mobiilseid rahakotte. Peamised erinevused nende vahel sõltuvad enamasti operatsioonisüsteemi pakutavatest turvamehhanismidest.

Tarkvarakotid arvutis

Arvutites töötavad mitmed populaarsed rahakotid, nagu Electrum, Exodus, Atomic või Bitcoin core.

Arvutis on operatsioonisüsteemi pakutavad turvamehhanismid rahakotiprotsessi teistest protsessidest eraldamiseks piiratud. Enamikku rakendusi käitab sama kasutaja ja rakendustel on lubatud lugeda teiste rakenduste andmeid.

Nende tarkvaraliste rahakottide turvalisus sõltub peamiselt neid kaitsva parooli turvalisusest ja ka sellest, et OS-is ei tööta pahavara (mida on üsna raske tagada, vt värskeid uudiseid Pegasuse kohta).

Enamasti salvestatakse seeme parooliga kaitstud krüpteeritud konteineris. Lihtne rünnak seisneb pahavara või kaughaldustööriista jaoks selle krüptitud konteineri hankimises ja ründajale saatmises. Seejärel saab parooli kas jõhkralt sundida või hankida kasutades a keylogger.

Stsenaariumi korral, kus ründajal õnnestub ligi pääseda ainult krüptitud konteinerile (ründaja leiab rahakotti sisaldava USB-võtme või installib arvutisse pahavara, kuid ohver ei ava kunagi oma rahakotirakendust), peab ründaja parooli toore jõuga kasutama.

Enamik paroole on halb. Veebi on lekkinud miljardeid paroole ja paljud inimesed kipuvad oma paroole mitme teenuse jaoks uuesti kasutama. Valmis tööriistad võimaldavad hankida krüptorahade rahakottide paroole, nt btcrecover or hashcat. Paroolid võivad olla keerulised, kuid iga rahakoti taga on päris raha, mistõttu ründajad ei kõhkle selliste paroolide murdmiseks ressursse investeerimast.

Kaks peamist turvapõhimõtet paroolide turvalisuse tagamiseks on kasutada paroolihaldurit ja mitte kunagi kasutada parooli erinevatel eesmärkidel.

Tarkvararahakottide jaoks on kõige murettekitavamad ohud spetsiaalselt teie raha kulutamiseks välja töötatud pahavara ja vargused. Selline pahavara, nagu KPOT või ElectroRAT, ei pea isegi parooli jõhkralt sundima: nad saavad selle sisestamisel otse kinni püüda, rahakoti konfiguratsiooniandmed dekrüpteerida ja seemnest välja filtreerida.

Siin on selle artikli jaoks välja töötatud mänguasjarakendus, mis sihib Electrumi rahakotti (kuigi see oleks võinud olla ka mõni muu tarkvarakott). See simuleerib pahavara, mis varastab kasutaja parooli, kui ohver selle sisestab. Seejärel kasutatakse parooli rahakoti andmete dekrüpteerimiseks ja seemne kuvamiseks:

Nagu näete, isegi kui parool on keeruline, saab rakendus selle alla laadida, kui see otse mällu nuusutab.

See näide on väga sarnane hiljutisele .SCR pahavara kampaaniad, mida kasutati krüptovaluutade varastamiseks. Kurjategijad kasutasid sotsiaalse manipuleerimise tehnikaid, et meelitada kasutajaid alla laadima pahatahtlikku ekraanisäästjat. See ekraanisäästja varastas tegelikult arvuti ohvrilt teavet, sealhulgas rahakoti ja krüptovaluuta vahetamise teavet.

Kokkuvõtteks arvutites töötava tarkvara rahakottide kohta:

  • Enamasti kaitsevad arvutites töötavad tarkvara-rahakotid kasutaja seemet parooliga.
  • Nende rahakotifailide juurdepääsukontroll sõltub peamiselt arvuti turvalisusest. Praktikas on arvutite kaitsmine pahavara eest raske ja kui krüptovaluutad muutuvad peavooluks, muutuvad rahakottide vastu suunatud rünnakud üha keerukamaks.
  • Sellise tarkvara rahakottide kasutamine digitaalsete varade kaitsmiseks ei ole hea mõte. Iga spetsiaalne pahavara suudab hankida rahakotifailid ja leida paroolid võrguühenduseta või hankida parooli klahvilogija kaudu.
Tarkvarakotid nutitelefonis

Androidi ja iOS-i nutitelefonid pakuvad vaikimisi turvafunktsioone, mida lauaarvutite operatsioonisüsteemides laialdaselt ei kasutata.

Mobiilioperatsioonisüsteemid pakuvad rakenduste ja kasutajaandmete kaitset. Eelkõige on rakenduste liivakastid kõigi rakenduste jaoks kohustuslikud. Näiteks Windowsi puhul see nii ei ole: vaikimisi pääseb iga rakendus juurde kasutajaandmetele.

Seega ei saa pahatahtlik rakendus teise rakenduse andmeid lugeda, välja arvatud juhul, kui:

  • See leiab selles rakenduses haavatavuse.
  • Või õnnestub tal õigusi suurendada, näiteks kasutades ära tuuma haavatavust, mis võimaldab tal saada süsteemile juurjuurdepääsu.

Kahjuks on selliseid rünnakuid. Need on palju lihtsamad Androidi ja iOS-i vananenud versioonides ning vanemates või odavates seadmetes, kus kolmanda osapoole kood on sageli vähem turvaline.

Kaasaegses OS-is on need rünnakud raskemad, kuid mitte kaugeltki teostamatud. Näiteks Ian Beer näitas an äärmiselt muljetavaldav nullklõpsu rünnak iOS 13.5-s 2020. aasta detsembris. Guang Gong esitles ärakasutamise kett juunis 2020 eemalt juurutada laia valikut Qualcommil põhinevaid Android-seadmeid. Ja kaks nädalat tagasi Keelatud lood avalikustas, et NSO Group kasutas ärakasutusahelat, et sihtida hiljutisi iOS- ja Android-seadmeid, kasutades 0-päevaseid haavatavusi.

Vähem kogenud ründajad saavad kasutada kohalikke turvaauke, mis võimaldavad neil pahatahtlikust rakendusest rahakotiandmeid välja võtta. Maksavad haavatavuse maaklerid, näiteks Zerodium kuni $ 200,000 privileegide suurendamiseks juurutamiseks Androidis ja iOS-is, kuid kuni 1,500,000 XNUMX XNUMX dollarit kaugrünnakute eest.

Uurisime paari Androidi/iOS-i rahakotti. Nende turvalisus sõltub rakendusest endast, aga ka aluseks oleva OS-i turvafunktsioonidest. Muidugi, kui operatsioonisüsteemi turvalisus lüüakse, pole rakendus enam turvaline

Tavaliselt kasutatakse seemne kaitsmiseks kahte meetodit:

  • Paroolikaitse – rahakoti andmed on kaitstud kasutaja sisestatud parooliga. Disain on sama, mis lauaarvuti rahakottidel. Praktikas on andmeid raskem hankida kui arvutist, kuna pahatahtlikust rakendusest rakenduse andmete hankimine on ülaltoodud põhjustel tehniliselt keerulisem. Kuid pärast andmete varastamist on parooli kättesaamine praktikas lihtsam: mobiiltelefonis keeruliste paroolide sisestamine on tüütu, seetõttu kipuvad kasutajad valima lihtsamaid. Lisaks on mobiilseadmete võtmete tuletamise mehhanisme (kasutatakse paroolist võtme loomiseks) tavaliselt lihtsam murda, kuna need on jõudluse tõttu sageli kergemad.
  • Coinomi ja Metamask on selliste rahakottide näited.

Järgmises videos näitame teist selle artikli jaoks välja töötatud mänguasjarakendust. See on pahavara, mis on maskeeritud võlts Bitcoini tickeri vidinaks. Pahavara kasutab paigatamata seadme teadaolevat haavatavust, et hankida seadmele juurjuurdepääs ja eksfiltreerida krüptitud seeme kaugserverisse. Seejärel kasutab server seemne dekrüpteerimiseks parooli julmalt.

See meetod ei ole rahakoti jaoks spetsiifiline. Seda saab (enam-vähem) hõlpsasti kohandada mis tahes parooliga kaitstud rahakotiga. Siin on sama näide Coinbase'i rahakotiga:

[Varjatud sisu]

  • Androidi võtmehoidjal (või iOS-i võtmehoidjal) põhinev turvalisus – Sel juhul krüpteeritakse rahakoti andmed krüpteerimisvõtmega, mis on salvestatud Androidi võtmehoidlasse (iOS-i võtmehoidja). Need teenused loodi algselt krüpteerimisvõtmete turvaliseks salvestamiseks ja paljud rakendused kasutavad neid võtme loomiseks, mis krüpteerib kõik tundlikud kasutajaandmed. Võtmesalvestust kasutavad rakendused rakendavad järgmist mehhanismi.
    • Rakendus palub võtmehoidlal genereerida antud identifikaatori jaoks krüpteerimisvõti. Keystore genereerib võtme ja salvestab selle turvaliselt.
    • Kui rakendus soovib blobi krüpteerida või dekrüpteerida, saadab see blobi koos võtmeidentifikaatoriga võtmehoidlasse.
    • Lõpuks kontrollib võtmehoidla, kas rakendusel on tegelikult õigusi seda võtit kasutada, ja saadab seejärel väljundandmed rakendusele tagasi.

Selle mudeli puhul ei saa rakendus võtme väärtust teada, kuid saab seda kasutada. Võtmega on võimalik siduda ka täiendavaid juurdepääsukontrolle: näiteks saab võtme juurdepääsu tingimuseks kasutaja autentimise (PIN-koodi või avamismustri taotlemine).

See mehhanism võib pakkuda täiendavat turvalisust võrreldes paroolipõhise kaitsega. Tõepoolest, viimastel telefonidel toetab Keystore'i TEE (Trusted Execution Environment) või mõnikord ka turvaelement.

See tähendab, et juurõigustega ründaja ei saa võtmehoidlast krüpteerimisvõtmeid välja võtta. Sellegipoolest saavad nad võtmehoidjat kasutada dekrüpteerimisoraaklina ning krüptida või dekrüpteerida mis tahes soovitud andmeid.

Keystore pakub krüpteerimis-, aga ka allkirjastamisteenuseid. Niisiis, kas rahakott võiks kaitsta oma krüpteerimisvõtmeid, muutes nende eraldamise keeruliseks? Vastus on kahjuks eitav: tarkvara rahakotid ei kasuta tehingute allkirjastamiseks Keystore'ija privaatvõtmeid töötleb rakendus alati lihttekstina.

Sellel on lihtne põhjus: KeyStore ja KeyChain pakuvad üldisi signatuuri- ja krüpteerimisteenuseid, kuid ei toeta krüptovaluutades kasutatavat krüptograafiat. Näiteks KeyStore rakendab ECDSA allkirja, kuid ainult FIPS 186-4 (P-224, P-256, P-384 ja P-521) määratletud NIST-kõveratel. Bitcoin kasutab teist kõverat, secp256k1, mida veel ei toetata.

Kokkuvõtteks võib öelda, et võtmehoidja ja võtmehoidja on head kaitseteenused salajased ja privaatvõtmed. Need võivad pakkuda teatud turvalisust, krüpteerides tundlikke andmeid: teatud turvaaukude klassid (näiteks failide meelevaldne lugemine) eemaldatakse võtmehoidja krüptimisega. Kui aga juurõiguste eskaleerimisest ei piisa võtmeväärtuste eraldamiseks riistvaratoega võtmehoidlast, piisab tundlike andmete dekrüpteerimisest. Ründaja, kes suudab rakendust instrumenteerida, saab selle saladusi hankida.

Kokkuvõtteks mobiilsete rahakottide kohta:

  • iOS/Androidi pakutavate rakenduste vaheline isolatsioonimehhanism tõstab turvalisuse latti kõrgemale võrreldes arvutis töötava tarkvararahakotiga. Rakenduse andmetele juurdepääsuks vajab ründaja esmalt privileegi eskalatsiooni. See on võimalik aegunud seadmetes. Oskuslikud ründajad (Ian Beer tegi seda üksi 6 kuuga, kuid… See on Ian Beer) saavad seda teha ka hiljuti parandatud seadmetes.
  • Võtmekaitseteenused (KeyStore, KeyChain) võivad lisada täiendava turvakihi puhkeolekus olevate saladuste kaitsmiseks. Kuna need ei toeta krüptovaluutarakenduste krüptoalgoritme, saab võtit siiski ekstraheerida.
  • Kõigil juhtudel saab juurjuurdepääsuga ründaja kas puhkeolekus seemne kätte saada, kui seda kasutatakse, või kasutada kasutaja õigusi rahakoti tühjendamiseks, kasutades tarkvararahakotti oraaklina.

Siin on viimane näide mänguasja nuhkvarast, mis sihib Blockchain.com-i rahakotti (kuigi seda saab teha ka paljude teiste rahakottide puhul). See paigaldatakse eemalt ja jälgib rahakotti. Kui kasutaja on oma sõrmejäljega autentinud, avatakse krüpteerimisvõti ja rahakoti andmed dekrüpteeritakse. Nuhkvara annab rakendusele selle krüpteerimisvõtme hankimise. Seejärel eksfiltreerib see võtme ja rahakoti andmed kaugserverisse:

[Varjatud sisu]

Järeldus

Kokkuvõtteks võib öelda, et tarkvara rahakotid on erineva turvalisuse tasemega. Kuid nende ohumudel ei hõlma OS-is töötava pahavara juhtumit, millel on privileegide eskalatsioon. See on loodud: rahakotirakendus ei saa olla turvalisem kui operatsioonisüsteem, millel see töötab.

  • iOS/Androidi pakutavate rakenduste vaheline isolatsioonimehhanism tõstab turvalisuse latti kõrgemale võrreldes arvutis töötava tarkvararahakotiga. Rakenduse andmetele juurdepääsuks vajab ründaja esmalt privileegi eskalatsiooni.
  • Võtmekaitseteenused (KeyStore, KeyChain) võivad lisada täiendava turvakihi puhkeolekus olevate saladuste kaitsmiseks. Kuna need aga ei toeta krüptovaluutarakenduste krüptoalgoritme, tuleb võtmeid manipuleerida otse rakendusest, seega pakuvad need piiratud kaitset.
  • Kõigil juhtudel saab juurjuurdepääsuga ründaja kas puhkeolekus seemne hankida, kui seda kasutatakse, või kasutada kasutaja õigusi rahakoti tühjendamiseks, kasutades tarkvararahakotti oraaklina.

Ajatempel:

Veel alates pearaamat