Individu memiliki kendali langsung dan tunggal (dan kepemilikan) atas kunci pribadi mereka (dan aset kripto) - dompet kripto yang mengikuti filosofi ini dikenal sebagai dompet "non-penahanan", yang berarti kunci tidak dapat diakses oleh orang luar.
Sampai serangkaian insiden peretasan dompet "non-penahanan" - kunci pribadi Wintermute September "dipaksa" dan kehilangan $ 160 juta, peretas dompet August Slope menyusup ke lebih dari 8.000 akun, Trinity 2020 yang mencuri lebih dari $ 2 juta peretasan Dompet IOTA , peretasan dompet Parity yang mencuri 150.000 ETH pada tahun 2017, dan berbagai kerentanan dompet perangkat keras mengaburkan garis keamanan antara dompet kustodian dan non-kustodi. Dalam kasus seperti itu, korban percaya bahwa mereka menggunakan dompet non-penahanan, hanya untuk mengetahui bahwa kunci privat telah dicuri.
Nyatanya, dompet non-penahanan tidak benar-benar memberi pengguna kendali penuh atas kunci mereka, karena dompet biasanya dibuat dan dijalankan oleh perangkat keras dan perangkat lunak orang lain. Pengguna semakin mempercayai produk pihak ketiga. Produk-produk ini mengintegrasikan atau menggunakan antarmuka baris perintah blockchain, perangkat lunak dan perangkat dompet, platform terpusat, kode kontrak pintar, aplikasi terdesentralisasi, dan setiap titik kontak meningkatkan risiko. Semua poin gabungan ini menambah hingga menghancurkan ilusi indah yang dimiliki orang tentang konsep "tidak dikelola".
"Tidak dikelola" sebenarnya dapat merujuk ke banyak elemen yang dikelola.
Secara umum, manajemen kunci (dasar keamanan dompet) dapat dibagi menjadi tiga arah:
- pembuatan kunci (pembuatan kunci enkripsi);
- penyimpanan kunci (melindungi kunci saat istirahat);
- Penggunaan kunci (menggunakan otorisasi kunci).
Setiap arah memiliki poin risiko yang unik.
Artikel ini akan memperkenalkan karakteristik dan kekurangan platform keamanan dan penjagaan dompet terenkripsi, mencakup area yang paling membutuhkan perhatian dan pengembangan di masa depan, dan bertujuan untuk membantu pengguna Web3 lebih memahami kompleksitas melindungi aset terenkripsi dengan cara non-penahanan . Selain itu, kami juga ingin membantu teknisi mengidentifikasi dan menghindari titik kegagalan umum dalam pengembangan dompet, dan menggunakan pengalaman komprehensif kami selama bertahun-tahun dalam sistem enkripsi Docker, Anchorage, Facebook, dan a16z untuk membantu pengguna dan pihak proyek menghindari insiden keamanan.
generasi kunci
Keamanan langkah pembuatan kunci sangat penting. Pada tahap ini, ada tiga masalah menyeluruh yang perlu diingat: gunakan kode yang andal, terapkan kode dengan benar, dan tangani output dengan aman.
Laporan audit diterbitkan oleh beberapa penyedia dompet di situs web resmi atau repositori Github mereka. Lakukan riset Anda sendiri dan coba tentukan apakah ada perusahaan terkemuka di balik dompet tersebut. Jika informasi langka, aktivitas pengguna dan pengembang yang signifikan dapat menjadi indikator yang berguna.
Ikuti panduan ini untuk mengurangi risiko. Jika dompet Anda gagal dalam pemeriksaan berikut, kaburlah.
Jangan gunakan dompet yang belum diuji cukup lama
Kode yang menyusun dompet harus memiliki reputasi yang baik. Memilih perangkat lunak yang ditulis dengan buruk, atau mencoba mengembangkan alternatif Anda sendiri, dapat menyebabkan "kejadian bencana" seperti kebocoran kunci atau pengungkapan informasi rahasia kepada pihak yang tidak berwenang.
Gunakan dompet dengan banyak asuransi
Bahkan jika kode tersebut menggunakan perpustakaan kriptografi yang memiliki reputasi baik, kode tersebut harus terintegrasi dengan baik. Perangkat lunak yang diaudit sering kali menggunakan parameter yang benar, tetapi bug dapat muncul selama eksekusi. Untuk proses pembuatan kunci tertentu, seperti banyak algoritme perhitungan multi-pihak (MPC), di mana banyak kunci individu harus dibuat dan direkonsiliasi — atau fragmen kunci, fragmen kunci — dompet harus mengikuti protokol yang ditentukan oleh algoritme. Algoritme juga mungkin memerlukan beberapa putaran kalkulasi dan kunci penyegaran, yang harus diintegrasikan dengan baik oleh dompet untuk menjaga keamanan dana.
Gunakan dompet yang "menyimpan rahasia"
Tahap akhir dari proses pembangkitan kunci melibatkan operasi aktual dan output dari perangkat lunak. Catat di mana dan dalam bentuk apa kunci dihasilkan. Idealnya, kunci harus dibuat di perangkat keras independen dan informasinya harus dienkripsi menggunakan algoritme yang andal.
Kunci dompet Slope, yang diretas musim panas ini, dibuat untuk masuk ke server eksternal dalam teks yang jelas. Celah keamanan semacam ini dapat muncul dalam audit kode atau dalam implementasi open source. Kurangnya transparansi dalam dompet – ditandai dengan kode sumber tertutup dan tidak ada audit keamanan pihak ketiga yang tersedia untuk umum harus meningkatkan kewaspadaan.
penyimpanan kunci
Setelah kunci dibuat, kunci tersebut harus disembunyikan di suatu tempat (bukan dalam teks biasa, selalu dienkripsi). Namun, kepemilikan perangkat yang menyimpan kunci tidak serta merta sama dengan kepemilikan dan kendali atas kunci tersebut. Banyak faktor yang harus dipertimbangkan, seperti keamanan rantai suplai perangkat, bagaimana perangkat terhubung, dan komponen lain mana yang berinteraksi dengan perangkat. Selain itu, setiap metode penyimpanan memiliki pertukarannya sendiri antara keamanan, aksesibilitas, pemeliharaan, dan ketersediaan.
Di bawah ini, kami telah mengkategorikan kategori keamanan dompet yang paling umum menurut tingkat risiko terkait yang diketahui.
Risiko Tinggi: Dompet Panas
Semuanya sama, dompet dingin lebih aman daripada dompet panas, tetapi juga lebih sulit digunakan. Dompet yang terhubung ke jaringan mana pun lebih mungkin untuk diretas karena memberi penyerang lebih banyak peluang untuk menemukan dan mengeksploitasi kerentanan.
Ada dua bentuk jaringan dompet panas:
- Perangkat lunak konektivitas: database online atau memori aplikasi server web, ekstensi browser
Ini adalah risiko tertinggi. Karena perangkat lunak dompet, baik dihosting atau tidak, memiliki akses langsung ke kunci—yang semuanya terhubung ke internet luar. Idealnya kunci harus dienkripsi, dan kumpulan kunci lain yang digunakan untuk mengenkripsinya harus disimpan dalam sistem manajemen kunci khusus (KMS) dengan kontrol akses yang sangat terbatas seperti rantai kunci sistem operasi atau sistem manajemen kunci awan.
- Perangkat keras yang terhubung: peralatan khusus, kantong aman seluler, modul keamanan perangkat keras (HSM) in-line
Perangkat keras yang terhubung umumnya dianggap kurang berisiko daripada perangkat lunak yang terhubung, tetapi masih tidak seaman penyimpanan dingin. Di perangkat keras yang terhubung, kunci hanya dibuat di perangkat perangkat keras khusus. Ini kemudian dapat dihubungkan ke jaringan internal atau publik. Perangkat semacam itu biasanya mengambil banyak tanggung jawab terkait dengan manajemen kunci, termasuk pembuatan kunci, penandatanganan, dan keamanan penyimpanan.
Ada juga dompet perangkat keras seperti Trezor dan Ledger. Ada juga modul keamanan perangkat keras, atau HSM, yang sering digunakan dalam pengaturan bisnis yang lebih tradisional, seperti yang menangani pemrosesan data sensitif seperti pembayaran kartu kredit.
Perangkat hanya seaman rantai pasokan yang memproduksi dan mengonfigurasinya. Saat mempertimbangkan menghubungkan perangkat keras, sebaiknya beli peralatan langsung dari vendor tepercaya. Dikirim langsung dari sumbernya, memastikan paket tidak terlihat rusak. Dimungkinkan juga untuk memverifikasi versi dan konfigurasi firmware sebelum digunakan.
Tentu saja, selalu ada kemungkinan dompet perangkat keras dicuri atau diakses oleh pihak yang tidak berkepentingan di kemudian hari. Mengingat ancaman ini, penting untuk memastikan bahwa dompet perangkat keras juga memiliki lapisan kontrol akses yang aman — pengamanan untuk memastikan mereka tidak membabi buta menandatangani setiap dan semua transaksi. Kontrol dapat mencakup persyaratan kata sandi, prompt yang meminta izin eksplisit untuk setiap langkah transaksi, dan ringkasan sederhana yang menjelaskan operasi transaksi yang sebenarnya. Selain itu, sebagian besar dompet perangkat keras mendukung enkripsi kunci pribadi, juga dikenal sebagai "pembungkus kunci".
Kurang Berisiko: Cold Wallet
Semuanya sama, dompet dingin umumnya dianggap lebih aman daripada dompet panas, meskipun pada umumnya juga tidak mudah digunakan. Cold wallet tidak terhubung ke jaringan internal atau publik mana pun.
Mari tinjau beberapa opsi cold wallet:
- Perangkat lunak offline: Aplikasi server offline
Karena penyerang dapat mencuri atau membawa mesin online kapan saja, dompet dingin harus dirancang agar aman saat online. Perangkat keras tujuan khusus seperti HSM sangat dianjurkan karena biasanya menyediakan lebih banyak kontrol daripada menghubungkan perangkat lunak.
- Perangkat Keras Offline: Dompet Perangkat Keras Offline, Modul Keamanan Perangkat Keras Offline (HSM)
Solusi ini dianggap paling aman. Mirip dengan kategori sebelumnya, kita harus berasumsi bahwa perangkat keras dapat dicuri dan diperoleh secara online. Oleh karena itu, seperti yang telah dibahas sebelumnya, sistem ini harus menyertakan lapisan kontrol akses yang diterapkan dengan benar. Banyak vendor HSM mengharuskan sejumlah kartu pintar fisik harus disatukan sebelum membuka kunci akses. Meskipun perangkat tidak memiliki layar tampilan, perangkat harus menyediakan beberapa cara bagi pengguna untuk memverifikasi detail transaksi.
Karena cold wallet atau dompet offline adalah kategori yang paling aman, sebagian besar dana yang dikelola oleh perusahaan besar disimpan dengan cara ini, seperti Coinbase, Gemini, Kraken, dll., dan Anchorage. Banyak dari pemain ini juga memilih garis pertahanan lain -- pencadangan dan pemulihan, seandainya mereka kehilangan akses, atau mesin rusak, dicuri, atau dihancurkan.
backup dan restore
Kunci penandatanganan harus dicadangkan setelah enkripsi. Pengulangan kunci penandatanganan kriptografi dan kunci pembungkus kunci sangat penting. Metode untuk mencadangkan kunci penandatanganan berbeda-beda, tetapi solusi asli perangkat keras harus selalu dipilih.
Untuk dompet perangkat keras, pencadangan biasanya melibatkan seed teks biasa dari mana kunci privat diturunkan. Kunci enkripsi standar memiliki mekanisme yang dapat memperoleh kunci yang dienkripsi dengan kontrol akses secara default. Kunci dapat diimpor ke HSM lain jika kontrol akses terpenuhi. Sejumlah besar HSM juga dapat memberikan kunci enkripsi umum yang berasal dari kuorum kartu pintar. Memisahkan perangkat keras dari bahan penting dengan cara ini membantu menghindari satu titik kegagalan.
Akhirnya, ada faktor manusia yang perlu dipertimbangkan. Mekanisme pemulihan harus mampu menahan ketidaktersediaan sementara atau permanen dari setiap individu yang terlibat dalam operasi pengelolaan akun. Individu harus memastikan bahwa ada cara untuk mengambil kunci jika terjadi pemadaman listrik atau keadaan darurat lainnya. Pada saat yang sama, operasi kelompok harus menentukan jumlah orang yang dapat terus beroperasi jika terjadi keadaan darurat.
penggunaan kunci
Setelah kunci dibuat dan disimpan, kunci tersebut dapat digunakan untuk membuat tanda tangan digital yang mengesahkan transaksi. Semakin besar kombinasi perangkat lunak dan perangkat keras, semakin besar risikonya. Untuk mengurangi risiko, dompet harus mematuhi panduan otorisasi dan autentikasi berikut.
Percaya, tetapi juga verifikasi
Dompet harus memerlukan verifikasi. Dengan kata lain, identitas pengguna harus diverifikasi dan hanya pihak berwenang yang memiliki akses ke konten dompet. Ukuran keamanan paling umum di sini adalah kode PIN atau frasa sandi. Bentuk autentikasi yang lebih canggih dapat mencakup biometrik atau persetujuan berdasarkan kriptografi kunci publik, seperti tanda tangan kriptografi dari beberapa perangkat keamanan lainnya.
Jangan gunakan dompet yang belum teruji cukup lama
Dompet harus menggunakan perpustakaan kriptografi suara. Lakukan penelitian untuk memastikan mereka diaudit dan aman untuk menghindari kebocoran materi kunci atau kehilangan kunci pribadi sepenuhnya. Menambah masalah, bahkan perpustakaan tepercaya dapat memiliki antarmuka yang tidak aman, seperti halnya dengan perpustakaan Ed25519 baru-baru ini.
Gunakan kembali
Jebakan penggunaan kunci yang dipelajari dengan baik adalah penggunaan ulang yang tidak disengaja dari parameter tanda tangan kriptografi tertentu. Beberapa skema tanda tangan mungkin memerlukan arti satu kali, "nomor yang digunakan hanya sekali" (nomor arbitrer), yang dimaksudkan untuk digunakan sekali dalam suatu sistem. Oleh karena itu, pastikan Anda menggunakan pustaka enkripsi suara. Tetapi vektor serangan ini juga telah dieksploitasi dalam peretasan profil tinggi di luar Web3, seperti peretasan Sony PlayStation 3 pada 2010.
satu kunci satu penggunaan
Praktik terbaik lainnya adalah menghindari penggunaan kembali kunci yang sama untuk berbagai tujuan. Misalnya, kunci terpisah harus disimpan untuk enkripsi dan penandatanganan. Ini mengikuti prinsip "setidaknya hak istimewa" dalam situasi yang dikompromikan, yang berarti bahwa akses ke aset, informasi, atau operasi apa pun harus dibatasi hanya untuk pihak atau kode yang benar-benar diperlukan agar sistem dapat berfungsi. Bergantung pada penggunaan, kunci yang berbeda memiliki persyaratan berbeda untuk pencadangan dan manajemen akses. Dalam ekosistem Web3, praktik terbaik adalah memisahkan kunci dan frase awal antara aset dan dompet, sehingga penyusupan satu akun tidak memengaruhi akun lainnya.
Meringkaskan
Penyimpanan kunci adalah masalah pelik dengan banyak bagian dan tahapan yang saling berinteraksi dari generasi ke penyimpanan untuk digunakan. Sifat custodial atau non-custodial dari kepemilikan kunci tidak sehitam putih yang dimiliki oleh kebijaksanaan konvensional. Situasi ini diperumit oleh banyaknya bagian bergerak yang terlibat dalam manajemen kunci, mulai dari pembuatan kunci hingga penyimpanan hingga penggunaan. Setiap perangkat keras atau perangkat lunak pada rantai menimbulkan risiko, bahkan mengekspos opsi yang awalnya bukan bagian dari dompet kustodian menjadi risiko kustodian.
Di masa mendatang, kami berharap dapat melakukan lebih banyak pekerjaan pengembangan untuk melindungi dompet dari serangan dan mengurangi risiko yang dibahas di atas. Area untuk perbaikan meliputi:
- Bagikan pengelolaan kunci sumber terbuka yang aman dan pustaka penandatanganan transaksi di seluruh sistem operasi seluler dan desktop;
- Kerangka kerja persetujuan transaksi open source bersama.
Ada juga pengembangan bersama dan sumber terbuka:
- Terapkan pustaka pembuatan kunci aman terbaik di berbagai backend penyimpanan (enkripsi pada disk, perangkat keras aman, dll.);
- Pustaka manajemen kunci dan penandatanganan transaksi untuk sistem operasi seluler dan desktop;
- Kerangka kerja proses persetujuan transaksi, memungkinkan verifikasi khusus seperti biometrik, persetujuan berbasis PKI, pemulihan otorisasi, dll.