Logotip Zephyrnet

Kako Kraken Wallet obravnava izzive v mobilni kripto varnosti

Datum:

Verjamemo, da je najbolj varna mobilna kripto denarnica tista, ki premaga inherentne omejitve mobilnega operacijskega sistema. Na primer, v sistemu iOS Applov CryptoKit ne podpira secp256k1 eliptična krivulja, standard za Bitcoin, Ethereum in mnoge druge verige blokov.

Ta omejitev razvijalcem omejuje uporabo varnega elementa naprav za shranjevanje ključev in podpisovanje transakcij. Zaradi tega so mobilne kripto denarnice razvrščene kot vroče denarnice, saj so povezane z internetom in podpisujejo transakcije zunaj varnega elementa z uporabo programske izvedbe kriptografskih algoritmov.

To pomeni, da morajo biti zasebni ključi izpostavljeni – vsaj med podpisovanjem – znotraj pomnilnika okolja aplikacije v peskovniku. Zaradi tega so bolj izpostavljeni potencialnim grožnjam kot denarnica, ki za podpisovanje transakcij uporablja varen element.

Kljub nezmožnosti neposrednega podpisovanja na varnih elementih, kar bi nudilo večjo zaščito, smo se zavezali, da bomo zagotovili open-source mobilna kripto denarnica, ki daje prednost varnosti, preglednosti in nadzoru uporabnikov.

Naša varnostna arhitektura je namensko zgrajena za:

  • Podpira več verig blokov
  • Ustvari zasebne ključe z visoko entropijo, mero nepredvidljivosti, ki krepi varnost
  • Izkoristite v bitkah preizkušeno kriptografijo za varno šifriranje zasebnih ključev uporabnikov, pri čemer izkoristite varnostno strojno opremo mobilnih telefonov in varnostne funkcije OS
  • Ponudite izboljšano varnost z uporabniško ustvarjenim geslom za napredne uporabnike, ki želijo dodatno raven šifriranja (poleg zaščite ključev OS za ključ za dešifriranje)
  • Ustvarite trdne temelje za prihodnjo vključitev novih tipov upravljanja ključev, kot so denarnice strojne opreme in sistemi, ki temeljijo na kvorumu MPC.

Prednost odprte kode

Kot eno temeljnih varnostnih načel Denarnica Kraken je brezplačna in odprtokodna programska oprema, razdeljeno pod licenco MIT. Pri gradnji nove denarnice od začetka je bilo za nas pomembno, da pomagamo spodbujati odprtokodni in porazdeljeni ekosistem.

Brez odprtokodne kode bi denarnica Kraken zahtevala veliko zaupanja brez preglednosti. To bi strankam dalo manj zaščite; odjemalca ne bi mogli preveriti, spremeniti ali zagnati sami, če bi to želeli. "Ne zaupaj, preveri!" ni le maksima industrije, je eno od naših vodilnih načel.

Odprta koda naše programske opreme izpolnjuje dva temeljna cilja, ki smo si jih prvotno zastavili za ta izdelek: preverljivo in revizijsko zmanjšanje zaupanja:

  • Preverljivost: Možnost preverjanja, ali so varnostne predpostavke, predstavljene v tem blogu, resnične. Vsak lahko poglej izvorno kodo natančno razumeti, kaj se in kaj ne počne v tej denarnici. 
  • Preglednost: Možnost preverjanja, ali je rezultat naše varnostne implementacije pravilen, in poročanja, če ni. Angažirali smo notranje in zunanje ekipe, da večkrat izvedejo varnostne revizije pred izdajo. V prihodnje lahko vsak revidira kodo in pripravi poročilo o svojih ugotovitvah.

Generiranje in uvoz ključev

Čeprav je React Native močno orodje, nima vgrajenega kripto modula. Za krmarjenje po tem smo uporabili izvedbo čistega js (crypto-browserify) kripto modula NodeJS. Metodo crypto.randomBytes() – ki generira dejanske naključne bajte, ki jih potrebujemo med ustvarjanjem ključa – upravlja react-native-get-random-values polyfill.

React-native-get-random-values ​​uporablja izvorno kodo za uporabo kriptografsko varnega generatorja psevdonaključnih števil (CSPRNG), ki je na voljo v napravi, za ustvarjanje naključnih števil. Na praktično vseh sodobnih napravah je ta generator naključnih števil podprt z varnim strojnim generatorjem naključnih števil.

Med inicializacijo denarnice črpamo entropijo iz CSPRNG in jo pretvorimo v mnemonično seme z uporabo dobro uveljavljenih paketov npm (BIP32, BIP39).

Ključi so pretvorjeni, shranjeni in predstavljeni uporabniku v skladu s standardom BIP39, ki ponuja mnemonično metodo, ki jo je enostavno varnostno kopirati, z interoperabilnostjo za večino denarnic v ekosistemu. Funkcija uvoza podpira obnovitev semen, združljivih z BIP39, ki zagotavljajo najboljšo interoperabilnost v ekosistemu. 

Upravljanje s ključi 

Denarnica Kraken ima dve skrivni vrednosti – seme in mnemoniko – ter več neskrivnih (a še vedno zasebnih) vrednosti, kot so naslovi denarnic, imena denarnic in opisi transakcij.

Gradivo zasebnega ključa (seme/mnemonika) je shranjeno v Keychain (v iOS) in Keystore (v Androidu). Gradivo javnih ključev in neobčutljivi podatki (razširjeni javni ključi, naslovi in ​​opisi) so shranjeni v šifrirani zbirki podatkov aplikacije (z Realm).

Obstaja več varnostnih kontrol, ki varujejo podatke:

  • Aplikacija zaklenjena: Naključno ustvarjen 64-bajtni niz, shranjen v Keychain ali Keystore. Dostop do skrivnosti je zaščiten z zahtevami glede prisotnosti uporabnika – biometrična avtentikacija ali preverjanje pristnosti z geslom.
  • Geslo: Zagotovi uporabnik in ni shranjen v napravi. Namesto tega mora uporabnik geslo vnesti ročno, kadar koli ga zahteva aplikacija. Denarnica ugotovi, ali je geslo potrebno, tako da preveri dve zastavici (is_storage_encrypted in is_seed_encrypted), shranjeni v Keychain ali Keystore. Algoritem Argon2 se uporablja kot ključna funkcija izpeljave.
  • Šifriranje baze podatkov: Baza podatkov (Realm) se uporablja za shranjevanje nezaupnih podatkov. Podatki so šifrirani z naključnim 64-bajtnim ključem.
  • Mehanizem zaklepanja: Vnos napačnega gesla sproži zakasnitve, preden je možno znova vnesti geslo. Ta mehanizem učinkovito odvrača napade z gesli na silo. Informacije o parametrih zaklepanja, kot sta število poskusov in trajanje zakasnitev, so varno shranjene v Keychain ali Keystore.

Seed, mnemonika in šifrirni ključ baze podatkov so vedno shranjeni v šifrirani obliki

  • Ko ni omogočena nobena zaščita: Seed, mnemonika in šifrirni ključ Realm so shranjeni neposredno v Keychain ali Keystore brez nadzora dostopa s prisotnostjo uporabnika.
  • Ko je aktivirano zaklepanje aplikacij: Mnemonika in seme sta najprej šifrirana s skrivnostjo zaklepanja aplikacije in nato varno shranjena v Keychain ali Keystore. Šifrirni ključ Realm je tudi neposredno shranjen v Keychain ali Keystore.
  • Ko je omogočena zaščita z geslom: mnemonika in seme sta šifrirana z geslom, medtem ko je šifrirni ključ Realm šifriran z geslom samo, če je bilo is_storage_encrypted nastavljeno na true.
  • Ko sta omogočeni tako zaklepanje aplikacij kot zaščita z geslom: mnemonika in seme sta šifrirana z geslom (prvo) in zaklepanjem aplikacije (drugo). Šifrirni ključ Realm je šifriran samo z geslom in le, če je is_storage_encrypted nastavljen na true.

Uporaba ključa

Seed/mnemonik je shranjen v Keychain ali Keystore in igra ključno vlogo pri kriptografskih operacijah. Ko je treba ustvariti nov naslov denarnice ali podpisati transakcijo, iz tega semena pridobimo potrebne informacije, kot je zasebni ključ.

Vendar je pomembno upoštevati, da mora biti zasebni ključ med temi operacijami naložen v pomnilnik. Ta potreba izhaja iz omejitev, ki smo jih omenili prej glede mobilnih denarnic, in pomanjkanja neposrednega dostopa do varnega elementa za podpisovanje transakcij.

  • Podpisovanje transakcij (pošiljanje žetonov)
  • Podpisovanje podatkov WalletConnect (obravnava zahtev za sejo)
  • Dodajanje nove denarnice
  • Omogočanje testnih verig (dodajanje testnih denarnic)
  • Prikaz mnemonike
  • Preverjanje mnemotehnike
  • Omogočanje in onemogočanje zaklepanja aplikacij
  • Omogočanje in onemogočanje gesla

Dodatna biometrična avtentikacija se izvaja za naslednje funkcije:

  • Omogočanje zaklepanja aplikacij
  • Brisanje vseh podatkov
  • Brisanje denarnice (računa)
  • Omogočanje ali onemogočanje gesla (poleg pridobitve zaklepanja aplikacije)
  • Odpiranje aplikacije
  • Premik aplikacije v ospredje
  • Ogled razširjenih javnih ključev
  • Povezovanje z decentralizirano aplikacijo (dApp)

Poleg tega je za odpiranje aplikacije morda potrebno geslo. Keychain in Keystore se vedno uporabljata prek react-native-keychain ovoj:

  • Ovoj ustvari nov ključ v Keychain ali Keystore za vsak element
  • Ovoj je odgovoren za posredovanje pravilnih konfiguracijskih zastavic za Keychain in Keystore
  • Denarnica vedno zahteva od ovoja, da konfigurira zastavice tako, da mora biti naprava odklenjena za dostop do ključa
  • Preverjanje prisotnosti uporabnika (biometrično) je konfigurirano tako, da temelji na času in preverjanje velja 5 sekund; preverjanje prisotnosti uporabnika se ne izvaja na dostop

Algoritem šifriranja je enak za vse elemente:

  • Ključ je pridobljen z Argon2id iz NFC-normalizirane skrivnosti
  • Sol za Argon2id je edinstven ID naprave
  • Način šifriranja je AES-GCM
  • Inicializacijski vektor (IV) za AES je 16 naključnih bajtov
  • Oznaka za avtorizacijo za AES mora biti dolga 16 bajtov

Podpis transakcije

Poleg prej omenjenih ukrepov glede shranjevanja ključev, biometričnih podatkov in zaščite z geslom ostaja podpisovanje transakcij kritično področje, na katerega se osredotočajo stalne izboljšave. Kot začetni korak smo na tem področju uvedli več omembe vrednih ukrepov, vključno z:

Transakcijska simulacija

Uporabljamo zunanje API storitve (kot npr napihovalka in drugi), da preverite možne ravni "resnosti", ki jih lahko transakcija prinese uporabniku (ocena tveganja). To sega od celotnega blokiranega zaslona za morebitne zlonamerne transakcije (ali podpisovanje sporočil) do opozoril o različnih stopnjah previdnosti, ki jih mora imeti uporabnik, preden podpiše ali potrdi transakcijo. 

Drugi ukrepi vključujejo:

  • Preverjanje naslova, da zagotovite, da ne pošljete na napačen naslov
  • Naslovi, ki so vedno vidni v celoti, da zagotovijo, da uporabnik ni ciljno usmerjen na specifične napade okoli sestave naslova
  • Preverjanje omrežja in opozorila za zagotovitev, da uporabnik ne pošlje v napačno omrežje
  • Preverjanje razumnosti pristojbin, da se zagotovi, da uporabnik transakcije ne preplača

Omrežna zasebnost

Da bi zaščitili zasebnost in osebne podatke uporabnikov na način, da ti podatki ne uhajajo na omrežne zahteve – zlasti v storitve tretjih oseb – smo razvili prehod API za proxy zahteve. Ta proxy nam omogoča, da uporabniških zahtev ne posredujemo storitvam tretjih oseb in ne razkrije odjemalčevega IP-ja zunanjim ali javnim ponudnikom. 

Ta zaledna storitev je v bistvu API za poizvedovanje po javnih podatkih verige blokov. Znotraj varnostne arhitekture denarnice je njen namen enkapsulirati to funkcionalnost za skupnim API-jem v vseh verigah blokov, tako da Kraken Walletu ni treba izvajati vedenja, specifičnega za verigo blokov, za poizvedovanje po podatkih.

Ta zaledna storitev definira ta skupni API. Na koncu posreduje zahteve drugim strankam, od katerih pridobi dejanske podatke. Sama verig blokov ne indeksira niti ne vzdržuje stanja.

Varnostne predpostavke

Naša varnostna arhitektura deluje na podlagi nekaj ključnih predpostavk za optimalno zaščito. Predvidevamo:

  • Uporabnikova naprava ni zakoreninjena, niti OS ni zastarel in dovzeten za kritične ranljivosti, ki bi lahko napadalcu omogočile dostop do pomnilnika naprave
  • Paket Keychain ali Keystore zagotavlja dovolj močno zaščito
  • Mobilni OS ponuja trdno peskovnik med procesi aplikacij, kar zagotavlja, da se pomnilnik, ki vsebuje občutljive podatke, kot so semena, pravilno upravlja

Dodatna funkcionalnost

  • Aplikacija deluje po principu shranjevanja le minimalnega števila podatkov, ki jih potrebuje za delovanje denarnice
  • V odjemalcu se ne uporabljajo kompleti za razvoj programske opreme (SDK) za analitiko ali poročanje o zrušitvah
    • Ker si prizadevamo preprečiti uhajanje podatkov tretjim osebam, ne bi bilo smiselno vključiti dodatnega sledenja podatkov – kar pomeni, da v odjemalcu ne boste našli analitike ali programske opreme za poročila o zrušitvah.
  • Nobene posodobitve po zraku (zunaj rednega toka posodabljanja AppStore/Play Store) niso dovoljene ali implementirane v kodni bazi
    • Uporabnik lahko pričakuje preveden kos programske opreme, ki ga ni mogoče posodobiti brez njegovega soglasja
  • Seznam žetonov in sistem ugleda
    • Da bi uporabnikom pomagali pri upravljanju njihovih žetonov, smo implementirali seznam in sistem ugleda, ki temelji na sredstvih, ki so jih zagotovili Kraken in druge tretje osebe.
  • Neželena pošta NFT
    • Prvo prizadevanje, ki ga nameravamo še naprej izboljševati, je odkrivanje neželene pošte in napadov, povezanih z neželeno pošto, kjer se neželena pošta samodejno arhivira v uporabnikovo mapo

Zunanja varnostna revizija

Varnost naše denarnice z lastnim skrbništvom je bila strogo ovrednotena z revizijo, ki jo je izvedlo Trail of Bits, dobro cenjeno revizijsko podjetje za varnost v industriji. Ta revizija je vključevala podroben pregled naše kodne baze in arhitekture odjemalca, namenjen odkrivanju in odpravljanju morebitnih varnostnih ranljivosti.

Zaradi zagotavljanja preglednosti in vpogleda v varnost naše platforme so rezultati te revizije javno dostopni. Ta odprt dostop omogoča uporabnikom in zainteresiranim stranem, da pregledajo ugotovitve varnostne analize, ki jo je izvedel Trail of Bits. Poročilo služi kot pomemben vir za razumevanje varnostnih ukrepov, ki jih imamo, in naše zavezanosti k vzdrževanju varnega okolja za naše uporabnike.

Dajanje prednosti varnosti, preglednosti in nadzoru uporabnikov

Denarnica Kraken vzpostavlja občutljivo ravnovesje med priročnostjo in robustno zaščito ob inherentnih omejitvah platforme. Naš pristop je vedno bil, da začnemo z interoperabilno strukturo denarnice, ki je splošno priznana. Ta trdna podlaga nam postavlja temelje za inovacije in dodajanje novih zmogljivosti, s ciljem ponuditi našim uporabnikom nenehno razvijajočo se varnostno rešitev najvišje stopnje za samostojno skrbništvo nad njihovimi kriptosredstvi.

Ta gradiva so samo za splošne informativne namene in niso naložbeni nasvet ali priporočilo ali nagovarjanje k nakupu, prodaji, založbi ali posedovanju katerega koli kriptosredstva ali k sodelovanju v kakršni koli posebni strategiji trgovanja. Kraken ne zvišuje ali znižuje cene katerega koli določenega kriptosredstva, ki ga da na voljo, in si ne bo prizadeval. Nekateri kripto izdelki in trgi so neregulirani in morda ne boste zaščiteni z vladnimi odškodninami in/ali regulativnimi zaščitnimi shemami. Nepredvidljiva narava trgov kriptosredstev lahko povzroči izgubo sredstev. Davek bo morda treba plačati na kakršno koli vračilo in/ali na kakršno koli povečanje vrednosti vaših kriptosredstev, zato morate poiskati neodvisen nasvet o svojem davčnem položaju. Lahko veljajo geografske omejitve.

spot_img

Najnovejša inteligenca

spot_img