Inteligența datelor Platon.
Căutare verticală și Ai.

Cum Kraken Wallet abordează provocările în securitatea criptomonedei mobile

Data:

Credem că cel mai sigur portofel criptografic mobil este unul care depășește constrângerile inerente ale sistemului său de operare mobil. De exemplu, pe iOS, CryptoKit de la Apple nu acceptă secp256k1 curba eliptică, un standard pentru Bitcoin, Ethereum și multe alte blockchain-uri.

Această limitare restricționează dezvoltatorii să utilizeze elementul securizat al dispozitivelor pentru stocarea cheilor și semnarea tranzacțiilor. Drept urmare, portofelele criptografice mobile sunt clasificate ca portofele fierbinți, deoarece ambele sunt conectate la internet și semnează tranzacții în afara unui element securizat folosind o implementare software a algoritmilor criptografici.

Aceasta înseamnă că cheile private trebuie să fie expuse – cel puțin în timpul semnării – în memoria mediului de aplicație în sandbox. Acest lucru îi lasă mai expuși la potențiale amenințări decât un portofel care utilizează un element securizat pentru a semna tranzacțiile.

În ciuda incapacității de a efectua semnarea direct pe elementele securizate, ceea ce ar oferi o protecție sporită, ne-am angajat să oferim un open-source portofel criptografic mobil care acordă prioritate securității, transparenței și controlului utilizatorului.

Arhitectura noastră de securitate este concepută special pentru:

  • Sprijină mai multe blockchain-uri
  • Generați chei private cu entropie mare, o măsură de imprevizibilitate care întărește securitatea
  • Utilizați criptografia testată în luptă pentru a cripta în siguranță cheile private ale utilizatorilor, valorificând hardware-ul de securitate și caracteristicile de securitate ale sistemului de operare ale telefoanelor mobile
  • Oferiți securitate sporită cu o parolă generată de utilizator pentru utilizatorii avansați care doresc un nivel suplimentar de criptare (pe lângă protecția lanțului de chei al sistemului de operare pentru cheia de decriptare)
  • Creați o bază solidă pentru încorporarea viitoare a noilor tipuri de management al cheilor, cum ar fi portofelele hardware și sistemele bazate pe cvorum MPC

Avantajul open-source

Ca unul dintre principiile sale fundamentale de securitate, Portofel Kraken este un software gratuit și open-source, distribuit sub licența MIT. Construind un nou portofel de la zero, a fost important pentru noi să contribuim la promovarea ecosistemului open source și distribuit.

Fără cod open-source, Kraken Wallet ar necesita o cantitate mare de încredere fără transparență. Acest lucru ar oferi clienților mai puțină protecție; nu ați putea verifica, modifica sau rula singur clientul dacă ați dori. „Nu ai încredere, verifică!” nu este doar o maximă din industrie, este unul dintre principiile noastre directoare.

Software-ul nostru de aprovizionare deschisă îndeplinește două obiective fundamentale pe care le-am stabilit inițial pentru acest produs: minimizarea încrederii verificabilă și auditabilă:

  • Verificabilitate: Capacitatea de a verifica dacă ipotezele de securitate prezentate în această postare de blog sunt adevărate. Oricine poate uita-te la codul sursa pentru a înțelege în mod specific ce se face și ce nu se face în acest portofel. 
  • Auditabilitate: Capacitatea de a verifica dacă rezultatele implementării noastre de securitate sunt corecte și de a raporta atunci când nu este. Am angajat echipe interne și externe pentru a efectua audituri de securitate de mai multe ori înainte de lansare. În continuare, oricine poate audita codul și poate produce un raport cu constatările lor.

Generare cheie și import cheie

React Native, deși este un instrument puternic, nu are un modul criptografic încorporat. Pentru a naviga prin aceasta, am folosit o implementare pure-js (cripto-browserify) a modulului cripto al lui NodeJS. Metoda crypto.randomBytes() – care generează octeții aleatori reali de care avem nevoie în timpul generării cheilor – este gestionată de reacţionează-native-obţine-valori-aleatorie poliumplutură.

React-native-get-random-values ​​folosește codul nativ pentru a utiliza Generatorul de numere pseudorandom Criptografic Securizat (CSPRNG) disponibil pe dispozitiv pentru a genera numere aleatorii. Pe aproape toate dispozitivele moderne, acest generator de numere aleatorii este susținut de un generator hardware securizat de numere aleatorii.

În timpul inițializării portofelului, extragem entropia din CSPRNG și o transformăm într-o sămânță mnemonică folosind pachete npm bine stabilite (BIP32, BIP39).

Cheile sunt convertite, stocate și prezentate utilizatorului conform standardului BIP39, care oferă o metodă mnemonică ușor de copiat cu interoperabilitate pentru majoritatea portofelelor din ecosistem. Funcția de import acceptă recuperarea semințelor compatibile BIP39, care oferă cea mai bună interoperabilitate în ecosistem. 

Managementul cheii 

Kraken Wallet deține două valori secrete – sămânța și mnemonicul – și mai multe valori non-secrete (dar totuși private), cum ar fi adresele portofelului, numele portofelului și descrierile tranzacțiilor.

Materialul cheii private (seed/mnemonic) este stocat în Keychain (pe iOS) și Keystore (pe Android). Materialul cheii publice și datele nesensibile (chei publice extinse, adrese și descrieri) sunt stocate în baza de date criptată a aplicației (folosind Tărâm).

Există mai multe controale de securitate care protejează datele:

  • Blocarea aplicației: un șir de 64 de octeți generat aleatoriu, stocat în Keychain sau Keystore. Accesul la secret este protejat cu cerințe de prezență a utilizatorului – autentificare biometrică sau cod de acces.
  • Parolă: furnizat de utilizator și nu păstrat pe un dispozitiv. În schimb, utilizatorul trebuie să furnizeze parola manual ori de câte ori este solicitat de aplicație. Portofelul determină dacă parola este necesară consultând două steaguri (is_storage_encrypted și is_seed_encrypted) stocate în Keychain sau Keystore. Algoritmul Argon2 este utilizat ca funcție de derivare a cheii.
  • Criptarea bazei de date: Baza de date (Realm) este folosită pentru a stoca date non-secrete. Datele sunt criptate cu o cheie aleatorie de 64 de octeți.
  • Mecanism de blocare: Introducerea unei parole incorecte declanșează întârzieri înainte de a putea fi efectuate încercări ulterioare de parolă. Acest mecanism descurajează efectiv atacurile cu parole de forță brută. Informațiile referitoare la parametrii de blocare, cum ar fi numărul de încercări și durata întârzierilor, sunt stocate în siguranță în Keychain sau Keystore.

Seed, mnemonicul și cheia de criptare a bazei de date sunt întotdeauna stocate în formă criptată

  • Când nu sunt activate protecții: Seed, mnemonicul și cheia de criptare Realm sunt stocate direct în Keychain sau Keystore fără un control de acces al prezenței utilizatorului.
  • Când blocarea aplicației este activată: Mnemonicul și semințele sunt mai întâi criptate cu secretul de blocare a aplicației și apoi stocate în siguranță în Keychain sau Keystore. Cheia de criptare Realm este, de asemenea, stocată direct în Keychain sau Keystore.
  • Când protecția prin parolă este activată: Mnemonicul și semințele sunt criptate cu parola, în timp ce cheia de criptare Realm este criptată cu parola numai dacă is_storage_encrypted a fost setat la adevărat.
  • Când sunt activate atât blocarea aplicației, cât și protecția prin parolă: Mnemonicul și semințele sunt criptate atât cu o parolă (prima) cât și cu blocarea aplicației (al doilea). Cheia de criptare Realm este criptată numai cu parola și numai dacă is_storage_encrypted a fost setată la true.

Utilizarea cheii

Semințele/mnemonicul este stocat în Keychain sau Keystore și joacă un rol crucial în operațiunile criptografice. Când trebuie generată o nouă adresă de portofel sau trebuie semnată o tranzacție, obținem informațiile necesare, cum ar fi cheia privată, din acest seed.

Cu toate acestea, este important de reținut că cheia privată trebuie încărcată în memorie în timpul acestor operațiuni. Această necesitate provine din constrângerile pe care le-am menționat mai devreme despre portofelele mobile și lipsa accesului direct la elementul securizat pentru semnarea tranzacțiilor.

  • Semnarea tranzacțiilor (trimiterea de jetoane)
  • Semnarea datelor WalletConnect (tratarea cererilor de sesiune)
  • Adăugarea unui portofel nou
  • Activarea lanțurilor de rețele de testare (adăugarea portofelelor de rețele de testare)
  • Afișarea mnemonicului
  • Verificarea mnemonicului
  • Activarea și dezactivarea blocării aplicației
  • Activarea și dezactivarea parolei

Se realizează autentificare biometrică suplimentară pentru următoarele funcționalități:

  • Se activează blocarea aplicației
  • Ștergerea tuturor datelor
  • Ștergerea unui portofel (cont)
  • Activarea sau dezactivarea unei parole (pe lângă recuperarea blocării aplicației)
  • Deschiderea aplicației
  • Mutarea aplicației în prim-plan
  • Vizualizarea cheilor publice extinse
  • Conectarea la o aplicație descentralizată (dApp)

În plus, parola poate fi necesară pentru deschiderea aplicației. Brelocul și depozitul de chei sunt întotdeauna folosite prin intermediul react-native-breloc ambalaj:

  • Ambalajul generează o nouă cheie în Keychain sau Keystore pentru fiecare articol
  • Wrapper-ul este responsabil pentru transmiterea steagurilor de configurare corecte pentru Keychain și Keystore
  • Portofelul solicită întotdeauna ambalajului să configureze steagurile astfel încât dispozitivul să fie deblocat pentru a accesa cheia
  • O verificare a prezenței utilizatorului (biometric) este configurată să fie bazată pe timp, iar verificarea este valabilă timp de 5 secunde; verificarea prezenței utilizatorului nu se efectuează pe acces

Algoritmul de criptare este același pentru toate articolele:

  • Cheia este derivată cu Argon2id dintr-un secret normalizat NFC
  • Sarea pentru Argon2id este ID-ul unic al dispozitivului
  • Modul de criptare este AES-GCM
  • Vectorul de inițializare (IV) pentru AES este de 16 octeți aleatori
  • Eticheta de autentificare pentru AES trebuie să aibă o lungime de 16 octeți

Semnarea tranzacțiilor

Pe lângă măsurile menționate anterior privind stocarea cheilor, biometria și protecția prin parolă, semnarea tranzacțiilor rămâne un domeniu critic de atenție pentru îmbunătățirea continuă. Ca un pas inițial, am implementat mai multe măsuri demne de remarcat în acest domeniu, inclusiv:

Simularea tranzacțiilor

Folosim servicii API externe (cum ar fi Blowfish și altele) pentru a verifica nivelurile posibile de „severitate” pe care o tranzacție le poate aduce utilizatorului (un scor de risc). Aceasta trece de la ecranul de blocare complet pentru posibile tranzacții rău intenționate (sau semnarea mesajelor) la avertismente cu privire la diferitele niveluri de precauție pe care ar trebui să le aibă utilizatorul înainte de a semna sau de a confirma o tranzacție. 

Alte măsuri includ:

  • Validarea adresei pentru a vă asigura că nu trimiteți la o adresă greșită
  • Adrese care sunt întotdeauna vizibile în întregime pentru a vă asigura că utilizatorul nu este țintit către anumite atacuri din jurul compoziției adresei
  • Validarea rețelei și avertismente pentru a vă asigura că utilizatorul nu trimite la rețeaua greșită
  • Verificări de corectitudine a taxelor pentru a vă asigura că utilizatorul nu plătește în exces pentru o tranzacție

Confidențialitate în rețea

Pentru a proteja confidențialitatea și datele personale ale utilizatorilor într-un mod în care aceste date nu sunt scurse în cererile de rețea – în special către servicii terțe – am dezvoltat o poartă API pentru solicitările de proxy. Acest proxy ne permite să nu transmitem solicitările utilizatorilor către servicii terțe și nu dezvăluie IP-ul unui client furnizorilor externi sau publici. 

Acest serviciu backend este practic un API pentru interogarea datelor publice blockchain. În cadrul arhitecturii de securitate a portofelului, scopul său este să încapsuleze această funcționalitate în spatele unui API comun pentru toate blockchain-urile, astfel încât Kraken Wallet să nu fie nevoit să implementeze comportamente specifice blockchain-ului pentru interogarea datelor.

Acest serviciu backend definește acest API comun. În cele din urmă, trimite solicitări altor părți de la care preia datele reale. Nu indexează blockchain-urile în sine și nici nu menține starea.

Ipoteze de securitate

Arhitectura noastră de securitate funcționează pe câteva ipoteze cheie pentru o protecție optimă. Presupunem:

  • Dispozitivul utilizatorului nu este rootat, nici sistemul de operare nu este învechit și susceptibil la vulnerabilități critice care ar putea acorda unui atacator acces la memoria dispozitivului
  • Pachetul Keychain sau Keystore oferă o protecție suficient de puternică
  • Sistemul de operare mobil oferă sandbox solid între procesele aplicațiilor, asigurând că memoria care conține date sensibile, cum ar fi semințele, este gestionată corect

Funcționalitate suplimentară

  • Aplicația funcționează pe principiul stocării doar a datelor minime de care are nevoie pentru a rula portofelul
  • Pe client nu sunt utilizate kituri de dezvoltare software (SDK) de analiză terță parte sau de raportare a erorilor
    • Având în vedere eforturile noastre de a nu scurge date către terți, nu ar avea sens să includem urmărirea datelor suplimentare - ceea ce înseamnă că nu veți găsi niciun software de analiză sau de raportare a erorilor în client.
  • Nu sunt permise sau implementate actualizări over-the-air (în afara fluxului obișnuit de actualizare AppStore/Play Store) pe baza de cod.
    • Utilizatorul se poate aștepta la o bucată de software compilată care nu poate fi actualizată fără acordul său de înscriere
  • Lista de jetoane și sistemul de reputație
    • Pentru a ajuta utilizatorii să-și gestioneze jetoanele, am implementat un sistem de listă și reputație bazat pe activele furnizate de Kraken și de alte terțe părți.
  • NFT-uri spam
    • Un efort inițial pe care intenționăm să-l îmbunătățim în continuare este detectarea spam-ului și a atacurilor legate de spam, unde spam-ul este arhivat automat în folderul utilizatorului

Audit extern de securitate

Securitatea portofelului nostru auto-custodie a fost evaluată riguros printr-un audit efectuat de Traseu de biti, o firmă de audit de securitate bine-respectată în industrie. Acest audit a cuprins o examinare detaliată a bazei de cod și a arhitecturii clientului nostru, menită să identifice și să abordeze potențialele vulnerabilități de securitate.

Pentru a asigura transparența și a oferi o perspectivă asupra securității platformei noastre, rezultatele acestui audit sunt disponibile publicului. Acest acces deschis permite utilizatorilor și părților interesate să revizuiască rezultatele analizei de securitate efectuate de Trail of Bits. Raportul servește ca o resursă importantă în înțelegerea măsurilor de securitate pe care le avem și a angajamentului nostru de a menține un mediu sigur pentru utilizatorii noștri.

Prioritizarea securității, transparenței și controlului utilizatorului

Kraken Wallet atinge un echilibru delicat între comoditate și protecție robustă în fața constrângerilor inerente ale platformei. Abordarea noastră a fost întotdeauna să începem cu o structură de portofel interoperabilă care este recunoscută pe scară largă. Această bază solidă ne oferă terenul pentru a inova și a adăuga noi capabilități, cu scopul de a oferi utilizatorilor noștri o soluție de securitate de vârf, în continuă evoluție, pentru a-și păstra proprietățile criptomonede.

Aceste materiale au doar scop informativ general și nu reprezintă sfaturi de investiții sau recomandare sau solicitare de a cumpăra, vinde, miza sau deține orice criptoactiv sau de a se angaja într-o strategie de tranzacționare specifică. Kraken nu lucrează și nu va lucra pentru a crește sau a reduce prețul oricărui criptoactiv anume pe care îl pune la dispoziție. Unele produse și piețe cripto nu sunt reglementate și este posibil să nu fiți protejat de compensații guvernamentale și/sau scheme de protecție de reglementare. Natura imprevizibilă a piețelor criptoactive poate duce la pierderi de fonduri. Taxele pot fi plătite pentru orice profit și/sau pentru orice creștere a valorii criptoactivelor dvs. și ar trebui să solicitați consiliere independentă cu privire la poziția dvs. fiscală. Se pot aplica restricții geografice.

spot_img

Ultimele informații

spot_img

Chat cu noi

Bună! Cu ce ​​​​vă pot ajuta?