Kecerdasan Data Plato.
Pencarian Vertikal & Ai.

Bagaimana Kraken Wallet mengatasi tantangan dalam keamanan kripto seluler

Tanggal:

Kami percaya bahwa dompet kripto seluler yang paling aman adalah dompet yang mampu mengatasi kendala yang melekat pada sistem operasi selulernya. Misalnya, di iOS, CryptoKit Apple tidak mendukung kurva elips secp256k1, standar untuk Bitcoin, Ethereum, dan banyak blockchain lainnya.

Batasan ini membatasi pengembang dalam memanfaatkan elemen aman perangkat untuk penyimpanan kunci dan penandatanganan transaksi. Akibatnya, dompet kripto seluler diklasifikasikan sebagai dompet panas karena keduanya terhubung ke internet dan menandatangani transaksi di luar elemen aman menggunakan implementasi perangkat lunak dari algoritma kriptografi.

Artinya, kunci privat harus diekspos – setidaknya saat penandatanganan – dalam memori lingkungan aplikasi sandbox. Hal ini membuat mereka lebih rentan terhadap potensi ancaman dibandingkan dompet yang menggunakan elemen aman untuk menandatangani transaksi.

Meskipun ketidakmampuan untuk melakukan penandatanganan pada elemen aman secara langsung, yang akan memberikan peningkatan perlindungan, kami telah berkomitmen untuk menyediakan open-source dompet kripto seluler yang mengutamakan keamanan, transparansi, dan kontrol pengguna.

Arsitektur keamanan kami dibuat khusus untuk:

  • Mendukung banyak blockchain
  • Hasilkan kunci pribadi dengan entropi tinggi, ukuran ketidakpastian yang meningkatkan keamanan
  • Manfaatkan kriptografi yang telah teruji untuk mengenkripsi kunci pribadi pengguna dengan aman, memanfaatkan perangkat keras keamanan ponsel dan fitur keamanan OS
  • Menawarkan keamanan yang ditingkatkan dengan kata sandi yang dibuat pengguna untuk pengguna tingkat lanjut yang menginginkan tingkat enkripsi tambahan (selain perlindungan rantai kunci OS untuk kunci dekripsi)
  • Menciptakan landasan yang kuat untuk penggabungan jenis manajemen kunci baru di masa depan, seperti dompet perangkat keras dan sistem berbasis kuorum MPC

Keuntungan sumber terbuka

Sebagai salah satu prinsip keamanan fundamentalnya, Dompet Kraken adalah perangkat lunak bebas dan sumber terbuka, didistribusikan di bawah lisensi MIT. Membangun dompet baru dari awal, penting bagi kami untuk membantu mengembangkan ekosistem open source dan terdistribusi.

Tanpa kode sumber terbuka, Kraken Wallet akan membutuhkan kepercayaan yang besar tanpa transparansi. Hal ini akan memberikan perlindungan yang lebih sedikit kepada klien; Anda tidak dapat memverifikasi, memodifikasi, atau menjalankan klien sendiri jika Anda menginginkannya. “Jangan percaya, verifikasi!” bukan sekadar pepatah industri, namun merupakan salah satu prinsip panduan kami.

Open source perangkat lunak kami memenuhi dua tujuan mendasar yang awalnya kami tetapkan untuk produk ini: minimalisasi kepercayaan yang dapat diverifikasi dan diaudit:

  • Verifikasi: Kemampuan untuk memverifikasi bahwa asumsi keamanan yang disajikan dalam postingan blog ini benar. ada yang bisa lihat kode sumbernya untuk secara spesifik memahami apa yang boleh dan tidak boleh dilakukan di dompet ini. 
  • Kemampuan audit: Kemampuan untuk memverifikasi bahwa keluaran penerapan keamanan kami sudah benar dan melaporkan kembali jika hasilnya salah. Kami telah melibatkan tim internal dan eksternal untuk melakukan audit keamanan beberapa kali sebelum rilis. Ke depannya, siapa pun dapat mengaudit kode tersebut dan membuat laporan mengenai temuan mereka.

Pembuatan kunci dan impor kunci

React Native, meskipun merupakan alat yang ampuh, tidak memiliki modul kripto bawaan. Untuk mengatasi hal ini, kami menggunakan implementasi pure-js (crypto-browserify) dari modul crypto NodeJS. Metode crypto.randomBytes() – yang menghasilkan byte acak aktual yang kita perlukan selama pembuatan kunci – ditangani oleh reaksi-asli-dapatkan-nilai acak polyfill.

React-native-get-random-values ​​menggunakan kode asli untuk memanfaatkan Penghasil Angka Pseudorandom yang Aman Secara Kriptografis (CSPRNG) yang tersedia di perangkat untuk menghasilkan angka acak. Di hampir semua perangkat modern, generator nomor acak ini didukung oleh generator nomor acak perangkat keras yang aman.

Selama inisialisasi dompet, kami mengambil entropi dari CSPRNG dan mengubahnya menjadi benih mnemonik menggunakan paket npm yang sudah ada (BIP32, BIP39).

Kunci dikonversi, disimpan, dan disajikan kepada pengguna berdasarkan standar BIP39, yang menawarkan metode mnemonik pencadangan yang mudah dengan interoperabilitas untuk sebagian besar dompet di ekosistem. Fitur impor mendukung pemulihan benih yang kompatibel dengan BIP39, yang memberikan interoperabilitas terbaik dalam ekosistem. 

Manajemen kunci 

Dompet Kraken menyimpan dua nilai rahasia – benih dan mnemonik – dan beberapa nilai non-rahasia (tetapi tetap pribadi) seperti alamat dompet, nama dompet, dan deskripsi transaksi.

Materi kunci pribadi (seed/mnemonik) disimpan di Keychain (di iOS) dan Keystore (di Android). Materi kunci publik dan data non-sensitif (kunci publik yang diperluas, alamat dan deskripsi) disimpan dalam database terenkripsi aplikasi (menggunakan Dunia).

Ada beberapa kontrol keamanan yang melindungi data:

  • Kunci aplikasi: String 64-byte yang dihasilkan secara acak yang disimpan di Gantungan Kunci atau Keystore. Akses ke rahasia dilindungi dengan persyaratan kehadiran pengguna – otentikasi biometrik atau kode sandi.
  • Kata Sandi: Disediakan pengguna dan tidak disimpan di perangkat. Sebaliknya, pengguna harus memberikan kata sandi secara manual setiap kali diminta oleh aplikasi. Dompet menentukan apakah kata sandi diperlukan dengan melihat dua tanda (is_storage_encrypted dan is_seed_encrypted) yang disimpan di Keychain atau Keystore. Algoritma Argon2 digunakan sebagai fungsi derivasi kunci.
  • Enkripsi basis data: Basis data (Realm) digunakan untuk menyimpan data non-rahasia. Data dienkripsi dengan kunci acak 64-byte.
  • Mekanisme penguncian: Memasukkan kata sandi yang salah akan memicu penundaan sebelum upaya kata sandi berikutnya dapat dilakukan. Mekanisme ini secara efektif mencegah serangan kata sandi brute force. Informasi mengenai parameter penguncian, seperti jumlah upaya dan durasi penundaan, disimpan dengan aman di Gantungan Kunci atau Keystore.

Kunci enkripsi seed, mnemonik, dan database selalu disimpan dalam bentuk terenkripsi

  • Ketika tidak ada perlindungan yang diaktifkan: Kunci enkripsi seed, mnemonik, dan Realm disimpan langsung di Gantungan Kunci atau Keystore tanpa kontrol akses kehadiran pengguna.
  • Saat kunci aplikasi diaktifkan: Mnemonic dan seed pertama-tama dienkripsi dengan rahasia kunci aplikasi dan kemudian disimpan dengan aman di Gantungan Kunci atau Keystore. Kunci enkripsi Realm juga langsung disimpan di Keychain atau Keystore.
  • Saat perlindungan kata sandi diaktifkan: Mnemonic dan seed dienkripsi dengan kata sandi, sedangkan kunci enkripsi Realm dienkripsi dengan kata sandi hanya jika is_storage_encrypted disetel ke true.
  • Saat kunci aplikasi dan perlindungan kata sandi diaktifkan: Mnemonic dan seed dienkripsi dengan kata sandi (pertama) dan kunci aplikasi (kedua). Kunci enkripsi Realm dienkripsi hanya dengan kata sandi dan hanya jika is_storage_encrypted disetel ke true.

Penggunaan kunci

Benih/mnemonik disimpan di Gantungan Kunci atau Keystore dan memainkan peran penting dalam operasi kriptografi. Ketika alamat dompet baru perlu dibuat atau transaksi perlu ditandatangani, kami memperoleh informasi yang diperlukan, seperti kunci pribadi, dari benih ini.

Namun, penting untuk dicatat bahwa kunci privat harus dimuat ke dalam memori selama operasi ini. Kebutuhan ini berasal dari kendala yang kami sebutkan sebelumnya mengenai dompet seluler dan kurangnya akses langsung ke elemen aman untuk penandatanganan transaksi.

  • Penandatanganan transaksi (mengirim token)
  • Penandatanganan data WalletConnect (menangani permintaan sesi)
  • Menambahkan dompet baru
  • Mengaktifkan rantai testnet (menambahkan dompet testnet)
  • Menampilkan mnemonik
  • Memverifikasi mnemonik
  • Mengaktifkan dan menonaktifkan kunci aplikasi
  • Mengaktifkan dan menonaktifkan kata sandi

Otentikasi biometrik tambahan dilakukan untuk fungsi berikut:

  • Mengaktifkan kunci aplikasi
  • Menghapus semua data
  • Menghapus dompet (akun)
  • Mengaktifkan atau menonaktifkan kata sandi (selain pengambilan kunci aplikasi)
  • Membuka aplikasi
  • Memindahkan aplikasi ke latar depan
  • Melihat kunci publik yang diperluas
  • Menghubungkan ke aplikasi terdesentralisasi (dApp)

Selain itu, kata sandi mungkin diperlukan untuk membuka aplikasi. Gantungan Kunci dan Keystore selalu digunakan melalui reaksi-asli-gantungan kunci pembungkus:

  • Pembungkusnya menghasilkan kunci baru di Gantungan Kunci atau Keystore untuk setiap item
  • Wrapper bertanggung jawab untuk meneruskan tanda konfigurasi yang benar untuk Gantungan Kunci dan Keystore
  • Dompet selalu meminta pembungkus untuk mengonfigurasi flag sehingga perangkat harus dibuka kuncinya untuk mengakses kunci
  • Pemeriksaan kehadiran pengguna (biometrik) dikonfigurasikan berdasarkan waktu, dan pemeriksaan tersebut valid selama 5 detik; pemeriksaan kehadiran pengguna tidak dilakukan per akses

Algoritme enkripsi sama untuk semua item:

  • Kuncinya diperoleh dengan Argon2id dari rahasia yang dinormalisasi NFC
  • Salt untuk Argon2id adalah ID unik perangkat
  • Mode enkripsinya adalah AES-GCM
  • Vektor inisialisasi (IV) untuk AES adalah 16 byte acak
  • Tag autentikasi untuk AES harus sepanjang 16 byte

Penandatanganan transaksi

Selain langkah-langkah yang disebutkan sebelumnya mengenai penyimpanan kunci, biometrik dan perlindungan kata sandi, penandatanganan transaksi tetap menjadi area fokus penting untuk perbaikan berkelanjutan. Sebagai langkah awal, kami telah menerapkan beberapa langkah penting dalam domain ini, termasuk:

Simulasi transaksi

Kami menggunakan layanan API eksternal (seperti blowfish dan lainnya) untuk memeriksa kemungkinan tingkat “keparahan” yang dapat ditimbulkan suatu transaksi kepada pengguna (skor risiko). Mulai dari layar blok penuh untuk kemungkinan transaksi berbahaya (atau penandatanganan pesan) hingga peringatan tentang berbagai tingkat kehati-hatian yang harus dimiliki pengguna sebelum menandatangani atau mengonfirmasi transaksi. 

Tindakan lain termasuk:

  • Validasi alamat untuk memastikan Anda tidak mengirim ke alamat yang salah
  • Alamat yang selalu terlihat secara keseluruhan untuk memastikan pengguna tidak menjadi sasaran serangan spesifik seputar komposisi alamat
  • Validasi dan peringatan jaringan untuk memastikan pengguna tidak mengirim ke jaringan yang salah
  • Pemeriksaan kewarasan biaya untuk memastikan pengguna tidak membayar lebih untuk suatu transaksi

Privasi jaringan

Untuk melindungi privasi dan data pribadi pengguna sedemikian rupa sehingga data ini tidak bocor saat permintaan jaringan – terutama ke layanan pihak ketiga – kami telah mengembangkan gateway API untuk permintaan proxy. Proksi ini memungkinkan kami untuk tidak meneruskan permintaan pengguna ke layanan pihak ketiga dan tidak mengungkapkan IP klien ke penyedia eksternal atau publik. 

Layanan backend ini pada dasarnya adalah API untuk menanyakan data blockchain publik. Dalam arsitektur keamanan dompet, tujuannya adalah untuk merangkum fungsi ini di balik API umum di semua blockchain sehingga Kraken Wallet tidak harus menerapkan perilaku spesifik blockchain untuk permintaan data.

Layanan backend ini mendefinisikan API umum ini. Ini pada akhirnya memproksi permintaan ke pihak lain dari mana ia mengambil data sebenarnya. Itu tidak mengindeks blockchain itu sendiri dan juga tidak mempertahankan status.

Asumsi keamanan

Arsitektur keamanan kami beroperasi berdasarkan beberapa asumsi utama untuk perlindungan optimal. Kami berasumsi:

  • Perangkat pengguna tidak di-root, OS juga tidak ketinggalan jaman dan rentan terhadap kerentanan kritis yang dapat memberikan penyerang akses ke memori perangkat
  • Paket Keychain atau Keystore memberikan perlindungan yang cukup kuat
  • OS seluler menawarkan sandboxing yang solid antar proses aplikasi, memastikan bahwa memori yang berisi data sensitif seperti seed dikelola dengan benar

Fungsionalitas tambahan

  • Aplikasi ini beroperasi berdasarkan prinsip hanya menyimpan data minimum yang diperlukan untuk menjalankan dompet
  • Tidak ada perangkat pengembangan perangkat lunak (SDK) analisis pihak ketiga atau pelaporan kerusakan yang digunakan pada klien
    • Dengan upaya kami untuk tidak membocorkan data apa pun kepada pihak ketiga, tidak masuk akal untuk menyertakan pelacakan data tambahan – yang berarti Anda tidak akan menemukan perangkat lunak analitik atau laporan kerusakan apa pun di klien.
  • Tidak ada pembaruan melalui udara (di luar alur pembaruan AppStore/Play Store reguler) yang diizinkan atau diterapkan pada basis kode
    • Pengguna dapat mengharapkan perangkat lunak terkompilasi yang tidak dapat diperbarui tanpa persetujuan mereka
  • Daftar token dan sistem reputasi
    • Untuk membantu pengguna mengelola token mereka, kami menerapkan sistem daftar dan reputasi berdasarkan aset yang disediakan oleh Kraken dan pihak ketiga lainnya.
  • Spam NFT
    • Upaya awal yang kami rencanakan untuk terus ditingkatkan adalah deteksi spam dan serangan terkait spam, di mana spam secara otomatis diarsipkan di folder pengguna

Audit keamanan eksternal

The security of our self-custody wallet was rigorously evaluated through an audit conducted by Jejak Bits, a well-regarded security auditing firm in the industry. This audit encompassed a detailed examination of our codebase and client architecture, aimed at identifying and addressing potential security vulnerabilities.

Untuk memastikan transparansi dan memberikan wawasan tentang keamanan platform kami, hasil audit ini tersedia untuk umum. Akses terbuka ini memungkinkan pengguna dan pihak berkepentingan untuk meninjau temuan analisis keamanan yang dilakukan oleh Trail of Bits. Laporan ini berfungsi sebagai sumber daya penting dalam memahami langkah-langkah keamanan yang kami terapkan dan komitmen kami untuk menjaga lingkungan yang aman bagi pengguna kami.

Mengutamakan keamanan, transparansi, dan kontrol pengguna

Kraken Wallet memberikan keseimbangan antara kenyamanan dan perlindungan yang kuat dalam menghadapi kendala platform yang melekat. Pendekatan kami selalu dimulai dengan struktur dompet yang dapat dioperasikan dan diakui secara luas. Fondasi yang kokoh ini menyiapkan landasan bagi kami untuk berinovasi dan menambahkan kemampuan baru, dengan tujuan menawarkan kepada pengguna kami solusi keamanan tingkat atas yang terus berkembang untuk menyimpan sendiri aset kripto mereka.

Materi ini hanya untuk tujuan informasi umum dan bukan merupakan nasihat investasi atau rekomendasi atau ajakan untuk membeli, menjual, mempertaruhkan atau menahan aset kripto apa pun atau untuk terlibat dalam strategi perdagangan tertentu. Kraken tidak dan tidak akan berupaya menaikkan atau menurunkan harga aset kripto tertentu yang disediakannya. Beberapa produk dan pasar kripto tidak diatur, dan Anda mungkin tidak dilindungi oleh kompensasi pemerintah dan/atau skema perlindungan peraturan. Sifat pasar aset kripto yang tidak dapat diprediksi dapat menyebabkan hilangnya dana. Pajak mungkin dibayarkan atas pengembalian apa pun dan/atau atas peningkatan nilai aset kripto Anda dan Anda harus mencari nasihat independen mengenai posisi perpajakan Anda. Pembatasan geografis mungkin berlaku.

tempat_img

Intelijen Terbaru

tempat_img

Hubungi kami

Hai, yang di sana! Apa yang bisa saya bantu?