Pada model keamanan dompet perangkat lunak | buku besar

Pada model keamanan dompet perangkat lunak | buku besar

Node Sumber: 2671485

Kami dapat membedakan dua jenis dompet yang umum: dompet perangkat lunak dan perangkat keras. Mereka memenuhi fungsi yang sama, tetapi dengan cara yang berbeda. Dompet perangkat lunak dianggap lebih mudah digunakan: satu program cukup untuk membuat, memvalidasi, dan menandatangani transaksi. Dengan dompet perangkat lunak, tidak perlu membuat transaksi pada perangkat lunak dan mengonfirmasikannya pada perangkat perangkat keras.

Dua minggu yang lalu, cerita terlarang meluncurkan serangan yang ditargetkan terhadap ribuan orang di seluruh dunia. Serangan ini mengeksploitasi kerentanan di Android dan iOS, untuk memasang spyware yang dikembangkan oleh NSO Group: Pegasus. Malware ini mampu memantau seluruh aktivitas perangkat, dan mengekstraksi informasi pribadi: percakapan SMS, WhatsApp dan Signal, panggilan telepon, dll. Artikel ini menjelaskan bagaimana, dalam kondisi ini, malware semacam itu dapat mengekstraksi semua rahasia dompet perangkat lunak, dan perbedaan dari sudut pandang keamanan antara dompet perangkat lunak pada ponsel dan komputer desktop.

Artikel ini dimaksudkan agar tidak terlalu teknis. Agar tetap relatif sederhana, hanya fitur dasar yang akan dibahas.

Melindungi rahasia

Apa yang disimpan dalam dompet kripto?

Dompet sebenarnya tidak menyimpan mata uang kripto pengguna: dompet hanya menyimpan rahasia, terutama kunci pribadi, yang memungkinkan untuk mengakses mata uang kripto dan kemampuan untuk membelanjakannya. Kunci pribadi ini sebagian besar adalah kunci pribadi ECC (kriptografi kurva eliptik) pada kurva yang berbeda tergantung pada blockchain. Kurva yang paling umum adalah secp256k1 (Bitcoin, Ethereum…), Ed25519 (Monero), atau BLS12-381 (Ethereum 2).

Kunci ini digunakan untuk menandatangani transaksi, dan secara lebih umum untuk berinteraksi dengan aset blockchain.

Penyimpanan kunci-kunci ini bergantung pada jenis dompet: deterministik atau tidak. Dompet Hierarchical Deterministic (HD) memungkinkan pembuatan pohon kunci dari satu rahasia master yang disebut seed (lih. BIP44). Benih ini sering berasal dari urutan mnemonik 12, 18 atau 24 kata yang dihasilkan atau dipilih secara acak oleh pengguna (lih.BIP39). Mnemonik ini memungkinkan untuk membatasi jumlah kunci yang akan disimpan: mereka dapat dihitung ulang kapan saja dari awal. Dompet HD hanya menyimpan mnemonik atau benih ini.

Dompet non deterministik menghasilkan kunci baru untuk setiap penggunaan dan harus menyimpan semuanya. Dompet non-deterministik tidak dapat dengan mudah dipindahkan ke dompet lain karena pencadangan tidak kompatibel.

Fitur keamanan utama dompet terdiri dari menghasilkan, menyimpan, dan menggunakan rahasia ini dengan benar. Ada berbagai tingkat keamanan terhadap berbagai jenis ancaman:

  • Perlindungan terhadap serangan "pelayan jahat": Penyerang dengan akses sementara ke dompet tidak boleh menambahkan pintu belakang di dalam dompet yang memungkinkan untuk mencuri PIN atau rahasia yang melindungi kata sandi.
  • Bahan kriptografi yang aman : Kunci dan nonce yang dihasilkan oleh dompet tidak boleh dapat diprediksi. Selain itu, pengetahuan tentang rahasia (kecuali benih) yang dihasilkan pada suatu saat tidak akan memungkinkan untuk memprediksi rahasia yang akan dihasilkan di masa mendatang.
  • Perlindungan saat istirahat: Jika penyerang mendapatkan data terus-menerus dari dompet perangkat lunak, mereka tidak boleh mengekstrak kuncinya.
  • Perlindungan selama penggunaan rahasia: Saat dompet tidak terkunci, kuncinya tidak boleh dapat diakses oleh penyerang atau malware.
Dompet perangkat keras

Model keamanan dompet perangkat keras bertujuan untuk meniadakan ancaman keamanan ini. Dompet perangkat keras melindungi dari malware berdasarkan desain. Mereka adalah perangkat independen yang menandatangani transaksi sendiri. Materi kriptografi selalu berada di dalam perangkat dan tidak pernah dikirim ke aplikasi perangkat lunak tempat mereka berkomunikasi. Antarmuka komunikasi selalu sederhana yang secara drastis mengurangi permukaan serangan. Ini bisa berupa USB, Micro SD atau kamera + layar (melalui kode QR), atau Bluetooth Hemat Energi.

Selain itu, dompet perangkat keras menyematkan layar langsung ke perangkat yang memungkinkan pengguna memverifikasi tindakan yang akan dia lakukan saat berinteraksi dengan kunci rahasianya. Pemeriksaan manual pada perangkat ini merupakan penanggulangan yang sangat efisien terhadap malware di komputer/ponsel. Jika malware di komputer/perangkat seluler dapat mengakses rahasia (seed atau kunci pribadi) atau bahkan menukar/mengubah alamat atau jumlah saat pengguna melakukan transaksi, hal ini tidak mungkin dilakukan dengan dompet perangkat keras.

Dompet perangkat keras juga dirancang untuk melindungi dari serangan "pelayan jahat" dan dari penyerang dengan akses fisik. Bergantung pada dompet perangkat keras, mereka memiliki tingkat keamanan yang berbeda, tetapi dalam semua kasus mereka dirancang untuk mengamankan dari ancaman ini. Penjelasan mendetail tentang model ancaman Ledger Nano dapat ditemukan di sini.

Dompet Perangkat Lunak

Dompet perangkat lunak biasa melindungi rahasia dengan cara biasa: mekanisme keamanan sistem operasi yang menjalankannya dan terkadang kontrol akses berdasarkan PIN atau kata sandi.

Berikut ini, dompet desktop (Windows, macOS, Linux) dan dompet seluler dipertimbangkan. Perbedaan utama di antara mereka sebagian besar bergantung pada mekanisme keamanan yang ditawarkan oleh sistem operasi.

Dompet perangkat lunak di komputer

Beberapa dompet populer, seperti Electrum, Exodus, Atomic atau Bitcoin core, berjalan di komputer.

Di komputer, mekanisme keamanan yang ditawarkan oleh sistem operasi untuk mengisolasi proses dompet dari proses lain terbatas. Sebagian besar aplikasi dijalankan oleh pengguna yang sama, dan aplikasi diizinkan untuk membaca data aplikasi lain.

Keamanan dompet perangkat lunak ini terutama bergantung pada keamanan kata sandi yang melindunginya, dan juga fakta bahwa tidak ada malware yang berjalan di OS (yang cukup sulit untuk dijamin, lihat berita terbaru tentang Pegasus).

Sebagian besar waktu, benih disimpan dalam wadah terenkripsi yang dilindungi oleh kata sandi. Serangan langsung terdiri dari malware atau alat administrasi jarak jauh, untuk mengambil wadah terenkripsi ini dan mengirimkannya ke penyerang. Kemudian kata sandi dapat dipaksakan atau diperoleh dengan menggunakan a keylogger.

Dalam skenario di mana penyerang hanya berhasil mengakses wadah terenkripsi (penyerang menemukan kunci USB yang berisi dompet, atau menginstal malware di komputer, tetapi korban tidak pernah membuka aplikasi dompetnya), penyerang harus memaksakan kata sandi.

Kebanyakan password buruk. Ada miliaran kata sandi yang bocor di web, dan banyak orang cenderung menggunakan kembali kata sandi mereka untuk beberapa layanan. Alat siap pakai memungkinkan Anda mengambil kata sandi untuk dompet cryptocurrency, seperti btcrecover or hashcat. Kata sandi bisa rumit, tetapi di balik setiap dompet ada uang nyata, sehingga penyerang tidak akan ragu untuk menginvestasikan sumber daya untuk memecahkan kata sandi tersebut.

Dua prinsip keamanan dasar untuk menjaga keamanan kata sandi Anda adalah dengan menggunakan pengelola kata sandi, dan jangan pernah menggunakan kembali kata sandi Anda untuk tujuan yang berbeda.

Ancaman yang paling mengkhawatirkan untuk dompet perangkat lunak adalah malware dan pencuri khusus, yang dikembangkan khusus untuk menguras dana Anda. Malware semacam itu, seperti KPOT atau ElektroRAT, bahkan tidak perlu memaksa kata sandi Anda: mereka dapat langsung menangkapnya saat Anda memasukkannya, mendekripsi data konfigurasi dompet, dan mengekstraksi benih.

Ini adalah aplikasi mainan, yang dikembangkan untuk artikel ini, yang menargetkan dompet Electrum (walaupun bisa jadi dompet perangkat lunak lain). Ini mensimulasikan malware yang mencuri kata sandi pengguna saat dimasukkan oleh korban. Kata sandi kemudian digunakan untuk mendekripsi data dompet, dan untuk menampilkan seed:

Seperti yang Anda lihat, meskipun kata sandinya rumit, aplikasi dapat mengambilnya saat langsung mengendusnya di memori.

Contoh ini sangat mirip dengan yang baru-baru ini malware .SCR kampanye yang digunakan untuk mencuri cryptocurrency. Penjahat menggunakan teknik rekayasa sosial untuk mengelabui pengguna agar mengunduh screensaver berbahaya. Screensaver ini sebenarnya mencuri informasi dari komputer korban, termasuk dompet dan informasi pertukaran mata uang kripto.

Untuk menyimpulkan dompet perangkat lunak yang berjalan di komputer:

  • Dalam kebanyakan kasus, dompet perangkat lunak yang berjalan di komputer melindungi benih pengguna menggunakan kata sandi.
  • Kontrol akses untuk file dompet ini terutama bergantung pada keamanan komputer. Dalam praktiknya, sulit untuk melindungi komputer dari malware, dan karena cryptocurrency menjadi arus utama, serangan terhadap dompet akan menjadi semakin canggih.
  • Menggunakan dompet perangkat lunak semacam itu untuk mengamankan aset digital bukanlah ide yang bagus. Malware khusus apa pun akan dapat memperoleh file dompet dan menemukan kata sandi secara offline, atau mendapatkan kata sandi melalui keylogger.
Dompet perangkat lunak pada smartphone

Smartphone Android dan iOS menawarkan fitur keamanan default yang tidak banyak digunakan pada sistem operasi desktop.

Sistem operasi seluler menawarkan perlindungan aplikasi dan data pengguna. Secara khusus, kotak pasir aplikasi bersifat wajib untuk semua aplikasi. Ini tidak terjadi pada, misalnya, Windows: secara default, aplikasi apa pun dapat mengakses data pengguna.

Oleh karena itu, aplikasi jahat tidak dapat membaca data dari aplikasi lain, kecuali jika:

  • Ia menemukan kerentanan pada aplikasi itu.
  • Atau berhasil meningkatkan hak istimewa, misalnya dengan mengeksploitasi kerentanan kernel yang memungkinkannya mendapatkan akses root ke sistem.

Sayangnya, serangan seperti itu ada. Mereka jauh lebih mudah pada versi lama Android dan iOS, dan pada perangkat yang lebih lama atau murah di mana kode pihak ketiga seringkali kurang aman.

Pada OS yang diperbarui, serangan ini lebih sulit tetapi bukannya tidak mungkin dilakukan dari jarak jauh. Misalnya, Ian Beer menunjukkan serangan tanpa klik yang sangat mengesankan di iOS 13.5 pada Desember 2020. Guang Gong mempersembahkan sebuah mengeksploitasi rantai untuk me-root berbagai perangkat Android berbasis Qualcomm dari jarak jauh pada Juni 2020. Dan, dua minggu lalu, cerita terlarang mengungkapkan bahwa NSO Group menggunakan rantai eksploitasi untuk menargetkan perangkat iOS dan Android terbaru menggunakan kerentanan 0 hari.

Penyerang yang kurang canggih dapat menggunakan kerentanan lokal yang memungkinkan mereka mengekstrak data dompet dari aplikasi jahat. Broker kerentanan seperti pembayaran Zerodium sampai $ 200,000 untuk peningkatan hak istimewa untuk melakukan root pada Android dan iOS, tetapi hingga $1,500,000 untuk serangan jarak jauh.

Kami mempelajari beberapa dompet Android/iOS. Keamanan mereka bergantung pada aplikasi itu sendiri, tetapi juga pada fitur keamanan OS yang mendasarinya. Tentu saja, ketika keamanan sistem operasi dikalahkan, aplikasi tersebut tidak aman lagi

Dua metode untuk melindungi benih yang umum digunakan:

  • Proteksi password – data dompet dilindungi oleh kata sandi yang dimasukkan oleh pengguna. Desainnya sama dengan dompet desktop. Dalam praktiknya, data lebih sulit diekstraksi daripada dari komputer, karena mengambil data aplikasi dari aplikasi berbahaya secara teknis lebih sulit, karena alasan yang dijelaskan di atas. Namun, mengambil kata sandi setelah data dicuri dalam praktiknya lebih mudah: memasukkan kata sandi yang rumit di ponsel itu membosankan, sehingga pengguna cenderung memilih yang lebih sederhana. Selain itu, mekanisme penurunan kunci (digunakan untuk membuat kunci dari kata sandi) pada perangkat seluler biasanya lebih mudah dibobol, karena seringkali lebih ringan karena alasan kinerja.
  • Coinomi dan Metamask adalah contoh dompet semacam itu.

Dalam video berikut, kami menampilkan aplikasi mainan lain yang dikembangkan untuk artikel ini. Ini adalah malware yang menyamar sebagai widget ticker Bitcoin palsu. Malware mengeksploitasi kerentanan yang diketahui pada perangkat yang belum ditambal untuk mendapatkan akses root pada perangkat, dan untuk mengekstrak seed terenkripsi ke server jarak jauh. Server kemudian memaksa kata sandi untuk mendekripsi seed.

Metode ini tidak khusus untuk dompet. Itu dapat (kurang lebih) dengan mudah disesuaikan dengan dompet yang dilindungi kata sandi. Ini dia contoh yang sama dengan Dompet Coinbase:

[Embedded content]

  • Keamanan berdasarkan Android Keystore (atau iOS Keychain) – Dalam hal ini, data dompet dienkripsi dengan kunci enkripsi yang disimpan di Android Keystore (iOS Keychain). Layanan ini awalnya dirancang untuk menyimpan kunci enkripsi dengan aman, dan banyak aplikasi menggunakannya untuk menghasilkan kunci yang akan mengenkripsi semua data sensitif pengguna. Aplikasi yang menggunakan Keystore mengimplementasikan mekanisme berikut:
    • Aplikasi meminta Keystore untuk membuat kunci enkripsi untuk pengidentifikasi tertentu. Keystore menghasilkan kunci dan menyimpannya dengan aman.
    • Saat aplikasi ingin mengenkripsi atau mendekripsi blob, aplikasi akan mengirimkan blob bersama dengan pengidentifikasi kunci ke Keystore.
    • Akhirnya, keystore memeriksa apakah aplikasi benar-benar memiliki hak untuk menggunakan kunci ini dan kemudian mengirimkan kembali data keluaran ke aplikasi.

Dengan model ini, aplikasi tidak dapat mengetahui nilai kunci tetapi dapat menggunakannya. Dimungkinkan juga untuk mengaitkan kontrol akses tambahan ke kunci: misalnya, akses kunci dapat dikondisikan ke autentikasi pengguna (meminta PIN atau pola buka kunci).

Mekanisme ini dapat memberikan keamanan tambahan, dibandingkan dengan proteksi berbasis kata sandi. Memang, pada ponsel terbaru, Keystore didukung oleh Trusted Execution Environment (TEE), atau terkadang Elemen Aman.

Itu berarti penyerang dengan hak akses root tidak akan dapat mengekstrak kunci enkripsi dari keystore. Namun demikian, mereka akan dapat menggunakan Keystore sebagai oracle dekripsi, dan untuk mengenkripsi atau mendekripsi data apa pun yang mereka inginkan.

Keystore menawarkan enkripsi, tetapi juga layanan penandatanganan. Jadi, dapatkah dompet melindungi kunci enkripsinya, membuatnya sulit diekstraksi? Jawabannya sayangnya tidak: dompet perangkat lunak tidak menggunakan Keystore untuk menandatangani transaksi, dan kunci pribadi selalu dimanipulasi dalam teks biasa oleh aplikasi.

Ini karena alasan sederhana: KeyStore dan KeyChain menawarkan layanan tanda tangan dan enkripsi umum, tetapi tidak mendukung kriptografi yang digunakan dalam mata uang kripto. Misalnya, KeyStore mengimplementasikan ECDSA Signature tetapi hanya pada kurva NIST yang ditentukan dalam FIPS 186-4 (P-224, P-256, P-384 dan P-521). Bitcoin menggunakan kurva lain, secp256k1, yang belum didukung.

Singkatnya, Keystore dan Keychain adalah layanan yang baik untuk dilindungi kunci rahasia dan pribadi. Mereka dapat menawarkan beberapa keamanan dengan mengenkripsi data sensitif: beberapa kelas kerentanan (pembacaan file sewenang-wenang, misalnya) akan ditempelkan oleh enkripsi Keystore. Namun, jika eskalasi hak akses root tidak cukup untuk mengekstrak nilai kunci dari Keystore yang didukung perangkat keras, cukup untuk mendekripsi data sensitif. Penyerang yang dapat menginstrumentasi aplikasi dapat mengambil rahasianya.

Untuk menyimpulkan pada dompet seluler:

  • Mekanisme isolasi antara aplikasi yang disediakan oleh iOS/Android meningkatkan standar keamanan dibandingkan dengan dompet perangkat lunak yang berjalan di komputer. Penyerang pertama-tama membutuhkan eskalasi hak istimewa untuk mengakses data aplikasi. Ini dapat dilakukan pada perangkat yang sudah ketinggalan zaman. Penyerang terampil (Ian Beer melakukannya dalam 6 bulan saja tapi… Ini adalah Ian Beer) juga dapat melakukannya pada perangkat yang baru saja ditambal.
  • Layanan perlindungan kunci (KeyStore, KeyChain) dapat menambahkan lapisan keamanan tambahan untuk melindungi rahasia saat istirahat. Namun demikian, karena mereka tidak mendukung algoritme kriptografi untuk aplikasi mata uang kripto, kunci masih dapat diekstraksi.
  • Dalam semua kasus, penyerang dengan akses root dapat mengambil seed saat istirahat, saat digunakan, atau memanfaatkan hak pengguna untuk mengosongkan dompet menggunakan dompet perangkat lunak sebagai oracle.

Ini adalah contoh terakhir dari spyware mainan yang menargetkan dompet Blockchain.com (meskipun ini dapat dilakukan di banyak dompet lain dengan mudah). Itu diinstal dari jarak jauh, dan memantau dompet. Setelah pengguna mengautentikasi menggunakan sidik jarinya, kunci enkripsi dibuka dan data dompet didekripsi. Spyware menginstruksikan aplikasi untuk mengambil kunci enkripsi ini. Kemudian mengekstrak kunci dan data dompet ke server jauh:

[Embedded content]

Kesimpulan

Sebagai kesimpulan, dompet perangkat lunak memiliki tingkat keamanan yang berbeda. Namun, model ancaman mereka tidak mencakup kasus malware yang berjalan di OS dengan eskalasi hak istimewa. Ini dirancang: aplikasi dompet tidak bisa lebih aman daripada sistem operasi yang digunakannya.

  • Mekanisme isolasi antara aplikasi yang disediakan oleh iOS/Android meningkatkan standar keamanan dibandingkan dengan dompet perangkat lunak yang berjalan di komputer. Penyerang pertama-tama membutuhkan eskalasi hak istimewa untuk mengakses data aplikasi.
  • Layanan perlindungan kunci (KeyStore, KeyChain) dapat menambahkan lapisan keamanan tambahan untuk melindungi rahasia saat istirahat. Namun demikian, karena mereka tidak mendukung algoritme kriptografi untuk aplikasi mata uang kripto, kunci harus dimanipulasi langsung dari aplikasi, sehingga menawarkan perlindungan terbatas.
  • Dalam semua kasus, penyerang dengan akses root, dapat mengambil seed saat istirahat, saat digunakan, atau memanfaatkan hak pengguna untuk mengosongkan dompet menggunakan dompet perangkat lunak sebagai oracle.

Stempel Waktu:

Lebih dari Buku besar