ETFFIN Finance >> Kursus keuangan >  >> Cryptocurrency >> Blockchain

Angka Acak Jangan Berbohong:Pandangan Teknis Lebih Dekat ke Peretasan DeFi Terbaru

Saat biaya gas Ethereum melonjak ke rekor tertinggi selama pasar bull 2021, membuat banyak protokol keuangan terdesentralisasi (DeFi) tidak dapat digunakan untuk pengguna biasa, beberapa proyek dipaksa untuk disebarkan di rantai lain.

Ini menciptakan lonjakan besar dalam permintaan untuk mekanisme lintas rantai – disebut jembatan – yang dapat mentransfer aset pengguna dari satu rantai ke rantai lainnya dengan aman. Jembatan lintas rantai umumnya dapat dibagi menjadi jembatan kustodian terpusat (CCB) dan jembatan non-penahanan terdesentralisasi (DNCB).

Seperti yang bisa diharapkan, lonjakan permintaan untuk jembatan lintas rantai mengakibatkan munculnya gelombang baru protokol dengan berbagai reputasi. Saat jembatan lintas rantai melayani kumpulan aset pengguna yang semakin berharga, hanya masalah waktu sebelum aktor dan peretas jahat menyadarinya.

Secara umum, peretas akan menargetkan DNCB karena mereka dapat mengeksploitasi kekurangan dalam protokol yang dirancang oleh tim pengembangan yang tidak berpengalaman. Peretas berpengalaman dapat dengan mudah memanfaatkan kesalahan dalam logika atau celah yang tertanam dalam kriptografi dan desain protokol yang dirancang dengan buruk.

Ini membawa kita ke hari ini:akibat dari beberapa serangan di jembatan lintas-rantai. Mata hitam lain pada industri yang dikenakan pertempuran. Untuk rekap, hanya di bulan Juli 2021:

  • ChainSwap mengalami peretasan pada 2 Juli, bernilai sekitar $800K dalam aset pengguna.
  • Kumpulan likuiditas AnySwap V3 mengalami peretasan pada hari 10 Juli, bernilai hampir $8 juta dalam $USDC dan $MIM. AnySwap adalah DEX lintas rantai yang didukung oleh Fusion Network.
  • ChainSwap mengalami peretasan lain, hanya 9 hari setelah peretasan pertama. Kali ini senilai $4 juta dalam aset pengguna. ChainSwap adalah platform yang didukung Alameda yang menjembatani Ethereum ke Binance Smart Chain.

Tujuan utama dari editorial ini adalah untuk mendidik dan memperkenalkan, relatif rinci, dua elemen jembatan lintas rantai terdesentralisasi yang sering diabaikan namun vital:angka acak 'k' yang terlibat dalam Secure Multi-Party Computation (SMPC) dan turunannya 'R'.

Peretasan AnySwap:Dua Tidak Selalu Lebih Baik Dari Satu

Kabarnya, peretasan AnySwap terjadi karena dua transaksi terpisah ditandatangani menggunakan nilai 'R' yang sama. Peretas menggunakan dua tanda tangan ini untuk merekayasa balik kunci pribadi yang mengendalikan akun MPC lintas-rantai AnySwap dan mencuri dana pengguna.

Tapi apa, tepat, adalah nilai 'R'?

Apa itu 'R' – Kelemahan Keamanan Akun

Salah satu pelajaran pertama yang dipelajari semua orang di blockchain adalah bahwa dana di dompet Anda dikendalikan oleh kunci pribadi Anda.

Anda semua pernah mendengar ungkapan:“bukan kunci Anda, bukan koinmu.” Ungkapan ini berarti bahwa setiap individu yang memiliki kunci pribadi dompet memiliki kendali penuh atas aset di dompet itu. Memang, satu-satunya hal yang diperlukan untuk mentransfer dana dari satu akun ke akun lainnya adalah menandatangani transaksi dengan kunci pribadi akun tersebut.

Saat sekarang, algoritma tanda tangan digital standar yang digunakan dalam blockchain adalah Elliptic Curve Digital Signature Algorithm (ECDSA).

ECDSA termasuk dalam kategori "non-deterministik" dari algoritma tanda tangan digital. Tidak seperti algoritma "deterministik" yang selalu memberikan output yang sama dengan input tertentu, Algoritma “non-deterministik” dapat menghasilkan keluaran yang berbeda meskipun diberi masukan yang sama. Untuk ECDSA, ini berarti bahwa kumpulan data yang sama, atau transaksi, akan memiliki beberapa tanda tangan hukum.

Setiap kali transaksi ditandatangani menggunakan ECDSA, nomor acak yang aman secara kriptografis 'k' dihasilkan. 'k' kemudian digunakan untuk menghitung titik pada kurva eliptik yang, pada gilirannya, digunakan untuk menghitung nilai 'R'. Sangat penting bahwa nomor acak baru 'k' dihasilkan setiap kali transaksi ditandatangani menggunakan ECDSA.

Jika 'k' yang sama digunakan untuk menandatangani banyak transaksi, nilai 'R' dari dua transaksi akan sama dan kunci pribadi akan bocor. Ini disebut sebagai tabrakan nilai 'k' dan itulah yang menyebabkan peretasan PS3 Sony pada akhir 2010. Ini juga yang menyebabkan peretasan AnySwap.

Berikutnya, mari kita periksa bagaimana peretas AnySwap merekayasa balik kunci pribadi yang mengendalikan akun MPC lintas-rantai AnySwap untuk mencuri dana pengguna.

Dua Pasti Tidak Selalu Lebih Baik dari satu

Pertimbangkan apa yang terjadi ketika dua transaksi ditandatangani menggunakan nomor acak yang sama 'k'. Karena 'k' digunakan untuk menurunkan 'R', nilai 'R' dari kedua transaksi juga akan sama. Sebut saja dua tanda tangan ini (s1) dan (s2).

Menurut ECDSA, persamaan yang mewakili dua transaksi ini adalah:

dimana S1, S2, dan 'R' mewakili data tanda tangan dan mewakili data transaksi. Ini semua data yang terlihat secara publik di blockchain. Ini meninggalkan dua parameter yang tidak diketahui yang tersisa:nomor acak 'k' dan kunci pribadi akun.

Mereka yang mengingat aljabar sekolah menengah mereka akan segera mengetahui cara menyelesaikan parameter yang tidak diketahui menggunakan dua persamaan. Kunci pribadi sk oleh karena itu dapat ditulis sebagai:

Peretas AnySwap memperhatikan bahwa dua transaksi memiliki nilai 'R' yang sama, menyiratkan bahwa nomor acak yang sama 'k' digunakan di keduanya. Ini memungkinkan peretas untuk merekayasa balik kunci pribadi yang mengendalikan akun MPC lintas rantai AnySwap menggunakan aljabar sederhana dan mencuri aset pengguna.

Kesalahan kritisnya adalah bahwa nomor acak yang sama 'k' digunakan dalam banyak transaksi. Jelas, 'k' tidak dihasilkan secara acak! Jadi bagaimana ini bisa dihindari?

Kebutuhan akan Komputasi Multi-Partai yang Aman

Jika dibandingkan dengan tanda tangan transaksi dasar, Secure Multi-Party Computation (SMPC) memang cukup kompleks. Namun, itu sepadan dengan usaha ekstra. Jika SMPC – yaitu sangat berbeda dari multi-tanda tangan – digunakan dengan benar untuk menghasilkan bilangan acak nyata, tidak ada risiko nomor acak 'k' diekspos.

Saat memanfaatkan SMPC, agen penandatangan bukan lagi orang perseorangan, tetapi banyak orang yang bekerja bersama untuk menandatangani transaksi.

Dengan tanda tangan transaksi dasar, generator angka acak yang benar saja sudah cukup untuk menghasilkan nilai 'R' dan menjamin keamanan. Namun, karena SMPC melibatkan banyak pihak yang tidak terkait, selalu ada ancaman bahwa satu atau lebih dari pihak-pihak ini jahat.

Dengan demikian, tidak masuk akal untuk mengizinkan satu orang menghasilkan nilai 'R' sendirian karena mereka mungkin merupakan aktor jahat. Jika mereka sendiri yang mengontrol angka acak 'k' dan, pada gilirannya, nilai 'R', mereka akan dapat merekayasa balik kunci pribadi akun dan mencuri aset. Karena itu, tiga prinsip harus dipatuhi saat menggunakan SMPC untuk menghasilkan nilai 'R':

  1. Nilai 'R' tidak dapat dihasilkan oleh satu individu;
  2. Tidak ada satu orang pun yang mengetahui angka acak 'k' yang digunakan untuk menurunkan nilai 'R';
  3. Angka acak 'k' harus cukup acak sehingga tidak bias dan tidak dapat diprediksi.

Dalam istilah orang awam, SMPC membutuhkan sekelompok orang untuk bekerja sama dalam suatu tugas tanpa mengetahui apa yang sedang mereka kerjakan, maupun dengan siapa mereka bekerja.

Pembuat Standar SMPC:Desain Berbagi Rahasia Wanchain yang Dapat Diverifikasi Secara Publik

Jembatan lintas rantai Wanchain mengandalkan mekanisme unik yang menggunakan SMPC untuk menjaga aset lintas rantai terkunci di akun yang dikelola oleh 25 pihak anonim yang disebut node Storeman. Jumlah node Storeman dapat ditingkatkan sesuai kebutuhan.

Saat menandatangani transaksi dari akun yang terkunci, nilai 'R' ditentukan bersama oleh 25 node Storeman ini melalui proses yang dikenal sebagai Berbagi Rahasia yang Dapat Diverifikasi Secara Publik. Proses ini memastikan bahwa tidak ada dua transaksi yang memiliki nilai 'R' yang sama.

Langkah-langkah spesifik yang dilakukan oleh 25 node Storeman ini adalah sebagai berikut:

  1. Setiap node Storeman (Pi) menghasilkan angka acak 'ki' secara lokal menggunakan generator angka acak yang benar;
  2. Setiap node Storeman (Pi) membagikan nomor acak 'ki' dengan node lain melalui saluran aman menggunakan Berbagi Rahasia Shamir.
    Berbagi Rahasia Shamir adalah skema berbagi rahasia yang dirancang untuk membagikan rahasia secara terdistribusi. Rahasianya terbagi menjadi beberapa bagian, disebut saham. Rahasia dapat direkonstruksi menggunakan jumlah minimum share. Berbagi Rahasia Shamir sering digunakan dalam kriptografi.
  3. Setelah menerima pembagian rahasia dari node lain, setiap node Storeman mengumpulkan bagian rahasia dan mengalikannya dengan titik dasar kurva eliptik, dan menyiarkan hasilnya;
  4. Setiap node Storeman melakukan interpolasi Lagrange menggunakan data broadcast untuk mendapatkan titik kurva eliptik yang absisnya adalah nilai 'R'.

Meskipun proses di atas cukup rumit, konsep intinya cukup sederhana. Nilai 'R' ditentukan bersama oleh 25 node Storeman. Setiap node Storeman menyumbangkan bagian dari nomor acak terenkripsi 'k'. Nilai 'R' kemudian ditentukan melalui operasi kriptografi.

Dengan kata lain, 25 node Storeman bekerja sama tanpa mengetahui apa yang sedang mereka kerjakan, atau siapa node Storeman lainnya.

Berbagi Rahasia yang Dapat Diverifikasi Secara Publik:Mengapa Ini Penting

Berbagi Rahasia yang Dapat Diverifikasi Publik memastikan bahwa:

  1. Tidak mungkin dua transaksi memiliki nilai R yang sama

Ada dua alasan utama untuk ini. Pertama, nilai 'R' ditentukan bersama oleh 25 node Storeman, daripada seorang individu. Secara teori, selama ada satu simpul jujur, nilai 'R' akan acak. Kedua, kontribusi setiap node Storeman dihasilkan oleh generator nomor acak yang benar.

Gabungan, dua transaksi hanya akan memiliki nilai 'R' yang sama jika jumlah angka acak yang dipilih oleh semua 25 node Storeman sama dalam dua transaksi. Probabilitas terjadinya adalah 2^(-256). Ini lebih kecil kemungkinannya daripada Anda terkena meteorit sekarang, saat Anda membaca kalimat ini.

  1. Angka acak 'k' yang digunakan untuk mendapatkan nilai 'R' tetap tersembunyi

Seperti yang ditunjukkan sebelumnya, setelah bilangan acak 'k' diketahui, kunci pribadi dapat direkayasa ulang. Saat menandatangani transaksi dari akun yang terkunci, setiap node Storeman hanya menghasilkan bagian dari nomor acak 'k'. Karena setiap bagian ditransmisikan melalui saluran aman, tidak ada node Storeman yang dapat memulihkan nilai penuh dari angka acak 'k'.

Dengan kata lain, berkat desain SMPC Wanchain, nomor acak 'k' yang digunakan untuk menurunkan nilai 'R' selalu tetap tersembunyi. Akun terkunci yang digunakan di jembatan lintas rantai terkemuka di industri Wanchain sangat aman. Tidak ada kemungkinan bahwa kunci pribadi bocor.

Putusan

Tim R&D Wanchain tidak setuju bahwa peretasan AnySwap mewakili risiko umum untuk proyek lain yang mengadopsi SMPC. Tim Litbang Wanchain, sejalan dengan pengembang lain di seluruh industri yang telah menerapkan SMPC, tidak melihat kerentanan atau kesalahan yang memungkinkan peretasan AnySwap sebagai risiko umum.

Tim juga ingin menekankan peran penting yang dimainkan angka acak di blockchain. Nomor acak tidak hanya digunakan untuk tujuan penandatanganan transaksi. Mereka digunakan di berbagai tingkat desain teknis dan merupakan komponen penting dari Konsensus PoS dan algoritma shard, yang secara langsung menentukan keamanan jaringan blockchain.

Menghasilkan angka acak yang andal secara efisien bukanlah tugas yang mudah. Ini adalah cawan suci dari seluruh petak matematika dan kriptografi. Orang-orang brilian telah mendedikasikan hidup dan pikiran mereka untuk mengoptimalkan pembuatan bilangan acak.

Pengembang Blockchain di seluruh dunia perlu melanjutkan tradisi ini dan mengembangkan algoritme pembuatan nomor acak terdistribusi yang lebih baik sambil terus mengoptimalkan pembuatan nomor acak on-chain. Masa depan DeFi – dan memang blockchain secara keseluruhan – akan dibangun di atas pekerjaan yang dilakukan hari ini.

Pengungkapan:Artikel ini ditulis oleh tim R&D Wanchain.