Retas mekanisme privasi Mimblewimble

Privasi cryptocurrency Mimblewimble / Grin pada dasarnya rentan. Setelah menghabiskan hanya $ 60 per minggu untuk AWS, saya secara unik menghubungkan pengirim dan penerima untuk 96% transaksi Grin secara real time.

Kerentanan adalah jantung dari protokol Mimblewimble, dan saya tidak berpikir itu bisa diperbaiki. Karenanya, dalam hal melindungi privasi, Mimblewimble tidak lagi dapat dianggap sebagai alternatif yang layak untuk Zcash atau Monero.

Dalam dua tahun terakhir, Mimblewimble telah menjadi populer sebagai protokol ringkas untuk cryptocurrency pribadi ("koin privasi"). Mimblewimble diciptakan pada tahun 2016 oleh seorang hacker dengan nama samaran Tom Elvis Jedusor. Dia mengirim deskripsi protokol ke IRC chat dan menghilang. Sejak itu, implementasi paling terkenal dari Mimblewimble adalah Grin crypto-private cryptocurrency yang dibuat oleh pengembang anonim, serta proyek Tari dan BEAM yang telah menarik investasi ventura. Bahkan Litecoin sedang mempertimbangkan integrasi Mimblewimble .



Beberapa peneliti telah membuat hipotesis kelemahan potensial dari mekanisme privasi di Mimblewimble. Kontribusi pekerjaan saya adalah saya mendemonstrasikan metode serangan spesifik, membuktikan kelayakannya pada cryptocurrency nyata dan mengukur efektivitasnya. Dengan menjalankan percobaan Grin, saya berhasil mendeanonimisasi 96% dari transaksi yang saya ulas. Jadi sekarang jelas bahwa Anda tidak dapat mengandalkan Mimblewimble jika Anda membutuhkan privasi tinggi.

Di github saya, Anda akan menemukan deskripsi terperinci tentang serangan, sumber untuk memainkannya, mengumpulkan data, dan FAQ teknis. Nanti dalam artikel ini adalah penjelasan umum, intuitif konektivitas, bagaimana serangan itu bekerja, dan apa artinya ini untuk teknologi privasi.

Apa itu konektivitas?


Penting untuk memahami apa arti serangan ini dan apa artinya itu.

Serangan ini tidak memungkinkan kami untuk menentukan jumlah yang diterima orang. Mimblewimble berhasil menyembunyikan jumlah transfer menggunakan kriptografi berdasarkan kurva elips vanila ( skema Pedersen kewajiban ). Yang memungkinkan serangan ini adalah menentukan siapa yang membayar siapa . Dengan kata lain, ini memungkinkan kita untuk menghubungkan transaksi satu sama lain dan menentukan arah transfer.

Mengapa ini penting?

Katakanlah Coinbase tahu bahwa alamat tertentu adalah milik seorang Venezuela bernama Daniel. Anda, pengguna Amerika, mencoba menarik koin dengan Coinbase. Tetapi setelah memperluas grafik transaksi, Coinbase menentukan bahwa Anda menerima uang dari Daniel - meskipun mereka tidak tahu berapa banyak. Karena pembatasan yang diberlakukan di Venezuela oleh Otoritas Kontrol Aset Asing AS, Coinbase menutup akun Anda. (Tentu saja, pertukaran akan tahu banyak tentang grafik transaksi, karena mereka memiliki data pengguna KYC yang ditampilkan dalam fiat).

Atau bayangkan bahwa beberapa pemerintah otoriter tahu bahwa alamat tertentu milik seorang pembangkang politik. Anda mengirim pembangkang ini donat kecil. Kemudian, ketika Anda mengirim transfer Mimblewimble Anda ke pertukaran lokal, pertukaran itu mentransfer data transaksi Anda ke pemerintah. Karena pemerintah melihat seluruh grafik transaksi, sekarang Anda tahu bahwa Anda mendukung pembangkang politik.

Serangan seperti itu tidak akan mungkin di Zcash. Karena transaksi di Zcash tidak terhubung, atau, dengan kata lain, setiap transaksi Zcash memiliki sejumlah besar anonimitas . Set anonimitas adalah seperangkat transaksi yang darinya transaksi Anda tidak dapat dibedakan. Bayangkan ini sebagai pencampuran dengan kerumunan: semakin besar serangkaian anonimitas, semakin banyak "kerumunan" transaksi Anda dicampur.



Di Zcash, set anonimitas dari setiap transaksi mencakup semua koin yang dilindungi. Ini adalah anonimitas maksimum yang mungkin dari sudut pandang informasi teoretis.



Di Monero, set anonimitas untuk setiap transaksi adalah set dari semua transaksi umpan yang diaktifkan pengguna. Meskipun klien Monero memungkinkan Anda untuk mengatur jumlah umpan dalam satu set, nilai default saat ini adalah 11. (Monero memiliki kesulitan sendiri dalam memilih umpan dengan aman , tapi saya pikir sebagian besar kerjanya, plus atau minus ).

Awalnya, diasumsikan bahwa kumpulan anonimitas Mimblewimble terdiri dari semua transaksi di blok yang sama, artinya, terlihat seperti ini:



Tetapi sebenarnya ini terlihat seperti ini:



Ini mengurangi anonimitas Mimblewimble yang disetel ke satu alamat.

Saya ingin mengatakan bahwa ini bukan kritik terhadap Grin pada umumnya! Saya sangat menghargai komunitas Grin dan pengembang inti, yang selalu siap menjawab pertanyaan saya di forum.

Grin masih memberikan privasi yang lebih tinggi daripada Bitcoin dan koin pribadi lainnya, karena mengenkripsi jumlah dengan aman. Tetapi model privasi Mimblewimble benar-benar lebih lemah daripada Zcash atau Monero. Dan ini membuatnya tidak cukup untuk banyak kasus penggunaan dunia nyata di mana privasi diperlukan.

Ikhtisar Serangan


Bagaimana tepatnya Anda dapat mendanonimkan grafik transaksi di Mimblewimble?

Saya mencatat bahwa, terlepas dari enkripsi jumlah transfer, Mimblewimble meninggalkan grafik transaksi yang dapat dilacak. Tetapi pengembang protokol tahu tentang ini, dan karena itu Mimblewimble menggunakan dua cara utama untuk memerangi konektivitas: melalui agregasi seluruh blok dan "dandelion" (Dandelion) .

Gagasan agregasi ujung ke ujung adalah bahwa ketika transaksi dikumpulkan dalam satu blok, mereka dikumpulkan menjadi satu "transaksi super". " Transaksi super" ini terlihat seperti CoinJoin raksasa - semua input dan output dicampur bersama, dan tidak ada cara mudah untuk menentukan mana yang dibayarkan kepada siapa. Hanya ada banyak input dan banyak output, dan jumlah tertentu disembunyikan.



Kedengarannya bisa diandalkan? Hanya ada satu masalah: CoinJoin ini dibangun satu transaksi pada satu waktu. Karena transaksi terus-menerus dibuat dan dikirim dari tempat yang berbeda, jika Anda memegang sniffer node yang mengumpulkan semua transaksi sebelum agregasi ujung ke ujung selesai, sangat mudah untuk mengurai CoinJoin. Setiap simpul sniffer dapat dengan mudah memonitor jaringan dan mengingat transaksi asli sebelum digabungkan. Ini cukup mudah jika Anda cukup mengarsipkan semua pesan yang Anda lihat di jaringan P2P.


Di sini Anda mungkin terkejut - dan apakah hanya itu yang terjadi?

Bahkan, ada lapisan perlindungan lain yang dibuat oleh tim Grin: protokol Dandelion ("dandelion") . Dandelion adalah metode jaringan yang dikembangkan oleh para peneliti di Universitas Carnegie Mellon, yang seharusnya menyembunyikan IP pencipta transaksi.



Biasanya, dalam cryptocurrency seperti bitcoin, pencipta transaksi hanya mengirim transaksi ke semua rekannya, dan dengan cepat melewati jaringan P2P. Namun dalam protokol Dandelion, distribusi setiap transaksi dimulai dengan permainan rahasia telepon yang rusak. Pencipta mentransfer transaksinya hanya ke satu pesta, yang, pada gilirannya, meneruskannya ke pesta lain, dan seterusnya di sepanjang rantai (dandelion โ€œtrunkโ€). Setelah sejumlah gerakan seperti itu, pesta terakhir mengirimkan transaksi persis seperti dalam bitcoin (dandelion โ€œflowerโ€). Tetapi pesta ini begitu jauh dari pencipta transaksi sehingga tidak ada pengamat yang tahu siapa yang memulai rantai itu.

Ini sangat bagus untuk menyembunyikan IP dari orang yang melakukan transaksi. Tetapi Dandelion in Grin memiliki fungsi kedua: dalam kasus yang jarang terjadi, Dandelion in Grin memungkinkan Anda untuk mempertahankan anonimitas transaksi bahkan jika ada simpul sniffer dalam jaringan. Karena setiap transaksi dimulai pada fase "batang" Dandelion, ketika dua transaksi berpotongan dalam fase propagasi "batang", mereka akan dikumpulkan lebih awal. Jika ini terjadi, maka pada saat transaksi dikirim dan menjadi terlihat oleh semua orang, simpul sniffer tidak dapat menempel transaksi: mereka sudah terjebak bersama di CoinJoin.

Mekanisme pengiriman transaksi ini adalah pertahanan utama Grin terhadap konektivitas transaksional oleh simpul sniffer. Tapi ada cara mudah untuk menghancurkannya.

Secara default, setiap node Grin terhubung ke 8 node peer lainnya. Tetapi dengan meningkatkan jumlah rekan, saya dapat menghubungkan node sniffer saya ke setiap node jaringan. Jika situs saya telah online terus menerus untuk waktu yang lama, pada akhirnya, hampir semua node dalam jaringan akan terhubung dengan saya, menjadikan saya hub super .

Ketika saya menjadi superknot, ada kemungkinan besar bahwa saya akan berada di rantai "dandelion" dari setiap transaksi. Dengan demikian, satu-satunya alasan saya mungkin tidak dapat menangkap transaksi sebelum agregasi adalah jika dua transaksi melintasi fase induk dandelion sebelum saya melihat setidaknya satu dari mereka . Jika saya melihat setidaknya satu dari mereka sebelum dikumpulkan, saya dapat memisahkan mereka dengan pengurangan sederhana dari set.



Dalam serangan saya, saya dapat menghubungkan 96% dari semua transaksi, hanya menghubungkan ke 200 rekan dari total 3000 rekan di jaringan Grin. Tetapi jika saya bersedia menghabiskan sedikit lebih banyak uang, saya dapat dengan mudah terhubung ke 3.000 node untuk menjaring hampir semua transaksi. Dan untuk ini, tidak perlu menyimpan satu superuser besar - serangan yang sama akan bekerja jika Anda menjalankan 3.000 node terpisah dengan IP unik, yang masing-masing akan terhubung hanya dengan satu rekan. Selama saya mencegat semua data transaksional dan membuangnya ke database master pusat, serangan itu akan bekerja dengan cara yang persis sama.

Jadi mungkinkah menyelamatkan Mimblewimble?


Tidak jelas. Menurut pendapat saya, dalam versi Grin saat ini, tidak ada cara untuk melindungi grafik transaksi. Hanya memperpanjang "dandelion" tidak cukup - akan mudah dikalahkan dengan sejumlah besar node, seperti yang saya jelaskan dalam laporan teknis .

Tetapi meskipun konektivitas transaksional, Mimblewimble masih memiliki sifat yang membedakan protokol dari cryptocurrency lainnya. Agregasi ujung ke ujung dimungkinkan di dalamnya, yang merupakan cara efektif untuk mengurangi ukuran blockchain, dan secara efektif menyembunyikan jumlah transaksi. Jika Anda menginginkan privasi tinggi, Anda selalu dapat menggabungkan Mimblewimble dengan protokol lain yang menyembunyikan grafik transaksi, misalnya, seperti pada Ethereum 9ยพ (yang menggabungkan Mimblewimble dengan skema pengaturan ulang nol gaya Zerocash).

Tetapi jelas bahwa Mimblewimble sendiri tidak cukup kuat untuk memberikan privasi tinggi.

Bitcoin sekarang berusia 11 tahun, tetapi cryptocurrency masih dalam tahap awal pengembangan. Belum lama ini, kerentanan serius ditemukan di Zcash dan Monero . Dan ini yang diharapkan: sebagian besar teknologi menarik masih dalam tahap penelitian.

Tapi begitulah sains selalu berkembang: kita terus-menerus mengemukakan hipotesis baru dan membantahnya sampai hanya mereka yang telah lulus ujian waktu yang tersisa.

Terima kasih kepada Hasib Kireshi untuk bantuan substansial dalam menyusun laporan ini dan mengilustrasikan serangkaian anonimitas. Terima kasih tambahan kepada Oleg Ostroumov, Elena Nadolinsky, Mohamed Fouda, Lucas Ryan dan Nader Al-Naji untuk meninjau draft posting ini. Dan terima kasih banyak kepada Jake Stutzman (NEAR Protocol) untuk ilustrasi Dandelion dan blok agregasi. Terima kasih Daria Smirnova karena menerjemahkan artikelnya.

Jika Anda menyukai artikel ini, saya sarankan berlangganan ke Twitter saya , kemana mereka akan pergi dulu (dalam bahasa Inggris).

Pengungkapan: Dragonfly Capital setuju untuk tidak memperdagangkan aset yang tercantum dalam laporan ini selama 3 hari sejak tanggal publikasi.

Source: https://habr.com/ru/post/id477018/


All Articles