Ohjelmistolompakoiden turvallisuusmallista | Ledger

Ohjelmistolompakoiden turvallisuusmallista | Ledger

Lähdesolmu: 2671485

Voimme erottaa kaksi yleistä lompakkotyyppiä: ohjelmisto- ja laitteistolompakot. Ne täyttävät saman tehtävän, mutta eri tavalla. Ohjelmistolompakoita pidetään yksinkertaisempana käyttää: yksi ohjelma riittää luomaan, vahvistamaan ja allekirjoittamaan tapahtumia. Ohjelmistolampakon kanssa tapahtumaa ei tarvitse luoda ohjelmistoon ja vahvistaa sitä laitteistolla.

Kaksi viikkoa sitten, Kielletyt tarinat paljasti kohdistetun hyökkäyksen tuhansia ihmisiä vastaan ​​ympäri maailmaa. Tämä hyökkäys hyödynsi Androidin ja iOS:n haavoittuvuuksia asentaakseen NSO Groupin Pegasuksen kehittämiä vakoiluohjelmia. Tämä haittaohjelma pystyy valvomaan laitteen koko toimintaa ja suodattamaan henkilökohtaisia ​​tietoja: SMS-, WhatsApp- ja Signal-keskustelut, puhelut jne. Tässä artikkelissa kerrotaan, kuinka tällainen haittaohjelma voisi näissä olosuhteissa poimia kaikki ohjelmistolompakoiden salaisuudet sekä matkapuhelimien ja pöytätietokoneiden ohjelmistolompakoiden turvallisuuserot.

Tämän artikkelin ei ole tarkoitus olla kovin tekninen. Jotta se pysyisi suhteellisen yksinkertaisena, käsitellään vain perusominaisuuksia.

Salaisuuksien suojaaminen

Mitä kryptolompakkoon tallennetaan?

Lompakot eivät itse asiassa tallenna käyttäjien kryptovaluuttoja: ne tallentavat vain salaisuudet, erityisesti yksityiset avaimet, jotka mahdollistavat pääsyn kryptovaluuttoihin ja niiden kulutuksen. Nämä yksityiset avaimet ovat enimmäkseen ECC (elliptic curve cryptography) yksityisiä avaimia eri käyrillä lohkoketjusta riippuen. Yleisimmät käyrät ovat secp256k1 (Bitcoin, Ethereum…), Ed25519 (Monero) tai BLS12-381 (Ethereum 2).

Näitä avaimia käytetään tapahtumien allekirjoittamiseen ja yleisemmin vuorovaikutukseen lohkoketjun omaisuuden kanssa.

Näiden avainten säilytys riippuu lompakon tyypistä: deterministinen vai ei. Hierarkkinen deterministinen (HD) lompakko mahdollistaa avainpuun luomisen yhdestä pääsalaisuudesta nimeltä siemen (vrt. BIP44). Tämä siemen on usein johdettu käyttäjän satunnaisesti luomasta tai valitsemasta 12, 18 tai 24 sanan muistomerkkijonosta (vrt.BIP39). Nämä muistomerkit mahdollistavat tallennettavien avainten määrän rajoittamisen: ne voidaan laskea uudelleen milloin tahansa siemenestä. HD-lompakot tallentavat vain tämän muistomerkin tai siemenen.

Ei-deterministiset lompakot luovat uuden avaimen jokaista käyttöä varten, ja ne on tallennettava ne kaikki. Ei-deterministisiä lompakoita ei voida helposti siirtää toiseen lompakkoon, koska varmuuskopiot eivät ole yhteensopivia.

Lompakon tärkeimmät turvaominaisuudet ovat näiden salaisuuksien luominen, säilyttäminen ja käyttö oikein. Erityyppisiä uhkia vastaan ​​on olemassa erilaisia ​​suojaustasoja:

  • Suojaus "pahan piikan" hyökkäyksiä vastaan: Hyökkääjä, jolla on tilapäinen pääsy lompakkoon, ei saa pystyä lisäämään lompakon sisään takaovea, joka mahdollistaa PIN-koodin tai salasanasuojaussalaisuuksien varastamisen.
  • Suojattu kryptografinen materiaali: Lompakon luomat avaimet ja nonce eivät saa koskaan olla ennustettavissa. Lisäksi jossain vaiheessa syntyneiden salaisuuksien (paitsi siemenen) tieto ei anna mahdollisuutta ennustaa tulevaisuudessa syntyvää salaisuutta.
  • Suojaus levossa: Jos hyökkääjä saa haltuunsa pysyviä tietoja ohjelmistolompakosta, hän ei saa pystyä purkamaan avaimia.
  • Suojaus salaisen käytön aikana: Kun lompakon lukitus on auki, hyökkääjä tai haittaohjelma eivät saa päästä käsiksi avaimiin.
Laitteiston lompakot

Laitteistolompakon tietoturvamallilla pyritään estämään nämä tietoturvauhat. Laitteistolompakot suojaavat haittaohjelmilta suunnittelultaan. Ne ovat itsenäisiä laitteita, jotka allekirjoittavat tapahtumat itse. Salausmateriaalit pysyvät aina laitteen sisällä, eikä niitä koskaan lähetetä ohjelmistosovellukseen, johon ne ovat yhteydessä. Viestintärajapinta on aina yksinkertainen, mikä vähentää merkittävästi hyökkäyspintaa. Se voi olla USB, Micro SD tai kamera + näyttö (QR-koodin kautta) tai Bluetooth Low Energy.

Lisäksi laitteistolompakot upottavat näytön suoraan laitteeseen, jonka avulla käyttäjä voi tarkistaa toiminnot, joita hän aikoo tehdä, kun hän käyttää salaisia ​​avaimia. Nämä manuaaliset laitteiden tarkistukset ovat erittäin tehokas vastatoimi tietokoneessa/matkapuhelimessa olevia haittaohjelmia vastaan. Jos tietokoneen/mobiililaitteen haittaohjelmat voivat päästä käsiksi salaisuuksiin (siemen- tai yksityisavaimiin) tai jopa vaihtaa/muokata osoitteita tai summia käyttäjän suorittaessa tapahtumaa, tämä ei ole mahdollista laitteistolompakolla.

Laitteistolompakot on myös suunniteltu suojaamaan "pahan palvelijan" hyökkäyksiltä ja hyökkääjiltä, ​​joilla on fyysinen pääsy. Laitteistolompakosta riippuen niillä on eri suojaustasot, mutta kaikissa tapauksissa ne on suunniteltu suojaamaan näitä uhkia vastaan. Yksityiskohtainen kuvaus Ledger Nano -uhkamalleista löytyy tätä.

Ohjelmiston lompakot

Tavalliset ohjelmistolompakot suojaavat salaisuuksia säännöllisin keinoin: käyttöjärjestelmän suojausmekanismeja, joissa ne toimivat, ja joskus PIN-koodiin tai salasanaan perustuva kulunvalvonta.

Seuraavassa tarkastellaan työpöytälompakoita (Windows, macOS, Linux) ja mobiililompakoita. Tärkeimmät erot niiden välillä perustuvat enimmäkseen käyttöjärjestelmän tarjoamiin suojamekanismeihin.

Ohjelmistolampakot tietokoneella

Useat suositut lompakot, kuten Electrum, Exodus, Atomic tai Bitcoin core, toimivat tietokoneissa.

Tietokoneessa käyttöjärjestelmän tarjoamat suojausmekanismit lompakkoprosessin eristämiseksi muista prosesseista ovat rajallisia. Useimpia sovelluksia käyttää sama käyttäjä, ja sovellukset voivat lukea muiden sovellusten tietoja.

Näiden ohjelmistolompakoiden turvallisuus riippuu pääasiassa niitä suojaavan salasanan turvallisuudesta ja myös siitä, että käyttöjärjestelmässä ei toimi haittaohjelmia (mitä on melko vaikea taata, katso viimeisimmät Pegasus-uutiset).

Suurimman osan ajasta siemen on tallennettu salattuun säilytystilaan, joka on suojattu salasanalla. Yksinkertainen hyökkäys tarkoittaa haittaohjelmalle tai etähallintatyökalulle salatun säilön hakemista ja sen lähettämistä hyökkääjälle. Sitten salasana voidaan joko raa'alla pakotuksella tai hankkia käyttämällä a keylogger.

Skenaariossa, jossa hyökkääjä onnistuu vain pääsemään salattuun säilöön (hyökkääjä löytää lompakon sisältävän USB-avaimen tai asentaa tietokoneelle haittaohjelman, mutta uhri ei koskaan avaa lompakkosovellustaan), hyökkääjän on pakotettava salasana.

Useimmat salasanat ovat huono. Internetissä on miljardeja salasanoja, jotka ovat vuotaneet, ja monet ihmiset käyttävät salasanojaan uudelleen useissa palveluissa. Valmiiden työkalujen avulla voit hakea salasanoja kryptovaluuttalompakoihin, kuten btcrecover or hashcat. Salasanat voivat olla monimutkaisia, mutta jokaisen lompakon takana on oikeaa rahaa, joten hyökkääjät eivät epäröi investoida resursseja murtaakseen salasanoja.

Kaksi perusturvaperiaatetta salasanojesi turvaamiseksi ovat salasanojen hallintaohjelman käyttö ja salasanan käyttäminen eri tarkoituksiin.

Ohjelmistolampakoille eniten huolestuttava uhka ovat omistetut haittaohjelmat ja varastajat, jotka on kehitetty erityisesti varojen tyhjentämiseen. Tällaiset haittaohjelmat, kuten KPOT tai ElectroRAT, sinun ei tarvitse edes pakottaa salasanaasi: he voivat kaapata sen suoraan, kun annat sen, purkaa lompakon määritystietojen salauksen ja suodattaa siemenen.

Tässä on tätä artikkelia varten kehitetty lelusovellus, joka on kohdistettu Electrum-lompakkoon (vaikka se olisi voinut olla toinen ohjelmistolompakko). Se simuloi haittaohjelmaa, joka varastaa käyttäjän salasanan, kun uhri syöttää sen. Salasanaa käytetään sitten lompakkotietojen salauksen purkamiseen ja siemen näyttämiseen:

Kuten näet, vaikka salasana olisi monimutkainen, sovellus pystyy hakemaan sen, kun se haistaa sen suoraan muistiin.

Tämä esimerkki on hyvin samanlainen kuin viimeaikainen .SCR-haittaohjelma kryptovaluuttojen varastamiseen käytettyjä kampanjoita. Rikolliset käyttivät manipulointitekniikoita huijatakseen käyttäjiä lataamaan haitallisen näytönsäästäjän. Tämä näytönsäästäjä itse asiassa varasti tietoja tietokoneen uhrilta, mukaan lukien lompakko- ja kryptovaluutanvaihtotiedot.

Lopuksi tietokoneissa toimivista ohjelmistolompakoista:

  • Useimmissa tapauksissa tietokoneilla toimivat ohjelmistolompakot suojaavat käyttäjän siementä salasanalla.
  • Näiden lompakkotiedostojen kulunvalvonta perustuu pääasiassa tietokoneen tietoturvaan. Käytännössä tietokoneita on vaikea suojata haittaohjelmilta, ja kun kryptovaluutoista tulee valtavirtaa, lompakoita vastaan ​​tehdyt hyökkäykset kehittyvät yhä kehittyneemmiksi.
  • Tällaisten ohjelmistolompakoiden käyttäminen digitaalisen omaisuuden suojaamiseen ei ole hyvä idea. Kaikki erikoistuneet haittaohjelmat voivat saada lompakkotiedostot ja löytää salasanat offline-tilassa tai saada salasanan keyloggerin kautta.
Ohjelmistolampakot älypuhelimessa

Android- ja iOS-älypuhelimet tarjoavat oletuksena suojausominaisuuksia, joita ei käytetä laajalti työpöytäkäyttöjärjestelmissä.

Mobiilikäyttöjärjestelmät tarjoavat sovellusten ja käyttäjien tietosuojan. Erityisesti sovellusten hiekkalaatikot ovat pakollisia kaikille sovelluksille. Näin ei ole esimerkiksi Windowsissa: oletusarvoisesti mikä tahansa sovellus voi käyttää käyttäjätietoja.

Näin ollen haitallinen sovellus ei voi lukea tietoja toisesta sovelluksesta, paitsi jos:

  • Se löytää haavoittuvuuden kyseisestä sovelluksesta.
  • Tai se onnistuu eskaloimaan oikeuksia esimerkiksi hyödyntämällä ytimen haavoittuvuutta, jolloin se saa pääkäyttäjän oikeudet järjestelmään.

Valitettavasti tällaisia ​​hyökkäyksiä on olemassa. Ne ovat paljon helpompia vanhentuneissa Android- ja iOS-versioissa sekä vanhemmissa tai halvoissa laitteissa, joissa kolmannen osapuolen koodi on usein vähemmän turvallinen.

Ajan tasalla käyttöjärjestelmässä nämä hyökkäykset ovat vaikeampia, mutta eivät etäisesti mahdottomia. Esimerkiksi Ian Beer näytti an erittäin vaikuttava nollanapsautushyökkäys iOS 13.5:ssä joulukuussa 2020. Guang Gong esitteli hyödyntää ketjua useiden Qualcomm-pohjaisten Android-laitteiden etäjuurta kesäkuussa 2020. Ja kaksi viikkoa sitten Kielletyt tarinat paljasti, että NSO Group käytti hyväksikäyttöketjua kohdistaakseen viimeaikaiset iOS- ja Android-laitteet käyttämällä 0 päivän haavoittuvuuksia.

Vähemmän kehittyneet hyökkääjät voivat käyttää paikallisia haavoittuvuuksia, joiden avulla he voivat poimia lompakkotietoja haitallisista sovelluksista. Haavoittuvuusvälittäjät, kuten Zerodium, maksavat jopa $ 200,000 Android- ja iOS-käyttöoikeuksien päättämistä varten, mutta jopa 1,500,000 XNUMX XNUMX dollaria etähyökkäyksille.

Tutkimme pari Android/iOS-lompakkoa. Niiden suojaus riippuu itse sovelluksesta, mutta myös taustalla olevan käyttöjärjestelmän suojausominaisuuksista. Tietenkin, kun käyttöjärjestelmän suojaus pettää, sovellus ei ole enää suojattu

Siementen suojaamiseen käytetään yleisesti kahta menetelmää:

  • Salasanasuojaus – lompakkotiedot on suojattu käyttäjän syöttämällä salasanalla. Suunnittelu on sama kuin pöytälompakoissa. Käytännössä dataa on vaikeampi poimia kuin tietokoneelta, koska sovellustietojen hakeminen haitallisesta sovelluksesta on teknisesti vaikeampaa yllä selitetyistä syistä. Kuitenkin salasanan hakeminen tietojen varastamisen jälkeen on käytännössä helpompaa: monimutkaisten salasanojen syöttäminen matkapuhelimiin on työlästä, joten käyttäjät valitsevat yksinkertaisempia. Lisäksi avainten johtamismekanismit (käytetään avaimen luomiseen salasanasta) mobiililaitteissa on yleensä helpompi rikkoa, koska ne ovat usein kevyempiä suorituskykysyistä.
  • Coinomi ja Metamask ovat esimerkkejä tällaisista lompakoista.

Seuraavassa videossa näytämme toista tätä artikkelia varten kehitettyä lelusovellusta. Se on väärennetyksi Bitcoin-ticker-widgetiksi naamioitu haittaohjelma. Haittaohjelmat käyttävät hyväkseen tunnettua haavoittuvuutta korjaamattomassa laitteessa saadakseen pääkäyttäjän pääsyn laitteeseen ja suodattaakseen salatun siemenen etäpalvelimelle. Tämän jälkeen palvelin pakottaa salasanan siemenen salauksen purkamiseksi.

Tämä menetelmä ei ole lompakkokohtainen. Se voidaan (enemmän tai vähemmän) helposti mukauttaa mihin tahansa salasanalla suojattuun lompakkoon. Tässä on sama esimerkki Coinbase Walletista:

[Upotetun sisällön]

  • Suojaus perustuu Android Keystoreen (tai iOS Keychainiin) – Tässä tapauksessa lompakkotiedot salataan salausavaimella, joka on tallennettu Android Keystoreen (iOS Keychain). Nämä palvelut suunniteltiin alun perin tallentamaan salausavaimia turvallisesti, ja monet sovellukset käyttävät niitä avaimen luomiseen, joka salaa kaikki arkaluontoiset käyttäjätiedot. Avainsäilöön perustuvat sovellukset toteuttavat seuraavan mekanismin:
    • Sovellus pyytää Keystorea luomaan salausavaimen tietylle tunnisteelle. Keystore luo avaimen ja tallentaa sen turvallisesti.
    • Kun sovellus haluaa salata blobin tai purkaa sen salauksen, se lähettää blobin yhdessä avaintunnisteen kanssa Keystoreen.
    • Lopuksi avainsäilö tarkistaa, onko sovelluksella todella oikeudet käyttää tätä avainta, ja lähettää sitten ulostulotiedot sovellukselle.

Tässä mallissa sovellus ei voi tietää avaimen arvoa, mutta voi käyttää sitä. Avaimeen on myös mahdollista liittää lisäkäyttöoikeuksia: esimerkiksi avaimen käyttö voidaan ehdollistaa käyttäjän todennukseen (pyytää PIN-koodia tai lukituksen avauskuviota).

Tämä mekanismi voi tarjota lisäturvaa salasanapohjaiseen suojaukseen verrattuna. Itse asiassa viimeaikaisissa puhelimissa Keystorea tukee Trusted Execution Environment (TEE) tai joskus suojattu elementti.

Tämä tarkoittaa, että hyökkääjä, jolla on pääkäyttäjän oikeudet, ei pysty poimimaan salausavaimia avainsäilöstä. Siitä huolimatta he voivat käyttää Keystorea salauksenpurkuoraakkelina ja salata tai purkaa haluamansa tiedot.

Keystore tarjoaa salaus-, mutta myös allekirjoituspalveluita. Joten, voisiko lompakko suojata salausavaimiaan, mikä vaikeuttaa niiden purkamista? Vastaus on valitettavasti ei: ohjelmistolompakot eivät käytä Keystorea tapahtumien allekirjoittamiseenja sovellus käsittelee aina yksityisiä avaimia selkeänä tekstinä.

Tämä johtuu yksinkertaisesta syystä: KeyStore ja KeyChain tarjoavat yleisiä allekirjoitus- ja salauspalveluita, mutta eivät tue kryptovaluutoissa käytettävää salausta. Esimerkiksi KeyStore toteuttaa ECDSA-allekirjoituksen, mutta vain FIPS 186-4:ssä (P-224, P-256, P-384 ja P-521) määritellyillä NIST-käyrillä. Bitcoin käyttää toista käyrää, sek256k1, jota ei vielä tueta.

Yhteenvetona voidaan todeta, että Keystore ja Keychain ovat hyviä suojauspalveluita salaiset ja yksityiset avaimet. Ne voivat tarjota jonkin verran turvallisuutta salaamalla arkaluontoiset tiedot: jotkin haavoittuvuuksien luokat (esimerkiksi mielivaltainen tiedostojen luku) suojataan Keystore-salauksella. Jos pääkäyttäjän oikeuksien eskalointi ei kuitenkaan riitä avainarvojen poimimiseen laitteiston tukemasta avainsäilystä, arkaluontoisten tietojen salauksen purkaminen riittää. Hyökkääjä, joka pystyy instrumentoimaan sovelluksen, pystyy hakemaan sen salaisuudet.

Lopuksi mobiililompakoista:

  • iOS/Androidin tarjoamien sovellusten välinen eristysmekanismi nostaa turvarimaa tietokoneella toimivaan ohjelmistolompakkoon verrattuna. Hyökkääjä tarvitsee ensin käyttöoikeuksien eskaloinnin päästäkseen käsiksi sovellustietoihin. Tämä on mahdollista vanhentuneilla laitteilla. Taitavat hyökkääjät (Ian Beer teki sen 6 kuukaudessa yksin, mutta… Se on Ian Beer) voivat tehdä sen myös äskettäin korjatuilla laitteilla.
  • Avainten suojauspalvelut (KeyStore, KeyChain) voisivat lisätä ylimääräisen suojaustason salaisuuksien suojaamiseen levossa. Kuitenkin, koska ne eivät tue kryptografisia algoritmeja kryptovaluuttasovelluksille, avain voidaan silti purkaa.
  • Kaikissa tapauksissa hyökkääjä, jolla on pääkäyttäjän oikeudet, voi joko noutaa siemenen lepotilassa, kun sitä käytetään, tai hyödyntää käyttäjän oikeuksia tyhjentää lompakko käyttämällä ohjelmistolompakkoa oraakkelina.

Tässä on viimeinen esimerkki leluvakoiluohjelmasta, joka on kohdistettu Blockchain.com-lompakkoon (vaikka tämä voidaan suorittaa monissa muissa lompakoissa yhtä helposti). Se asennetaan etänä ja valvoo lompakkoa. Kun käyttäjä on todentunut sormenjäljellään, salausavaimen lukitus avataan ja lompakkotietojen salaus puretaan. Vakoiluohjelma ohjaa sovelluksen hakemaan tämän salausavaimen. Sitten se suodattaa avaimen ja lompakkotiedot etäpalvelimelle:

[Upotetun sisällön]

Yhteenveto

Yhteenvetona voidaan todeta, että ohjelmistolompakoilla on eri turvallisuustasot. Heidän uhkamallinsa ei kuitenkaan kata tapausta, jossa käyttöjärjestelmässä on haittaohjelma, jonka käyttöoikeus on eskaloitunut. Tämä on suunniteltu: lompakkosovellus ei voi olla turvallisempi kuin käyttöjärjestelmä, jossa se toimii.

  • iOS/Androidin tarjoamien sovellusten välinen eristysmekanismi nostaa turvarimaa tietokoneella toimivaan ohjelmistolompakkoon verrattuna. Hyökkääjä tarvitsee ensin käyttöoikeuksien eskaloinnin päästäkseen käsiksi sovellustietoihin.
  • Avainten suojauspalvelut (KeyStore, KeyChain) voisivat lisätä ylimääräisen suojaustason salaisuuksien suojaamiseen levossa. Kuitenkin, koska ne eivät tue kryptografisia algoritmeja kryptovaluuttasovelluksille, avaimia on käsiteltävä suoraan sovelluksesta, joten ne tarjoavat rajoitetun suojan.
  • Kaikissa tapauksissa hyökkääjä, jolla on pääkäyttäjän oikeudet, voi joko noutaa siemenen lepotilassa, kun sitä käytetään, tai hyödyntää käyttäjän oikeuksia tyhjentää lompakko käyttämällä ohjelmistolompakkoa oraakkelina.

Aikaleima:

Lisää aiheesta pääkirja