Berkenalan dengan Transaksi Konfidensial
Beranda
Artikel
Berkenalan dengan Transaksi Konfidensial

Berkenalan dengan Transaksi Konfidensial

Tingkat Lanjut
Diterbitkan Feb 10, 2020Diperbarui Dec 28, 2022
6m

Daftar isi


Pengantar

Salah satu fungsi sistem blockchain yang sering dianggap penting adalah transparansi. Artinya node pada jaringan dapat menyimpan salinan dan memverifikasi bahwa tidak ada aturan yang dilanggar. Dalam banyak ledger terdistribusi, setiap orang dapat memuat explorer blok secara online yang memungkinkan mereka untuk mencari blok, transaksi, dan alamat.
Pada segi privasi, ini tidaklah ideal. Dalam sebuah sistem seperti Bitcoin, setiap transaksi dapat ditautkan ke transaksi sebelumnya. Koin tidak dapat ditukarkan/fungible secara teknis, artinya setiap koin dapat diikat ke transaksi tertentu. Tidak ada seorang pun yang dapat mencegah Anda untuk mengirimkan bitcoin, tetapi mereka dapat menolak transaksi Anda jika koin-koin ini sebelumnya melewati alamat yang diblacklist.

Kemungkinan terburuk, kurangnya sifat "dapat ditukarkan" dapat sangat berdampak pada fondasi sistem. Koin-koin bersih akan bersifat premium, sedangkan koin yang lama akan berkurang nilainya dikarenakan oleh riwayatnya.

Privasi dalam Bitcoin sering dilebih-lebihkan. Koin tidak hanya dapat dilacak, tetapi penggunanya juga. Anda memang dapat menggunakan nama samaran (yang terlihat adalah alamat publik, bukan nama), tetapi ini bukan tanpa cacat. Teknik analisis yang canggih, dengan meningkatkan akurasi, dapat mengelompokkan alamat-alamat untuk mengenali entitas jaringan.

Salah satu peningkatan yang diusulkan untuk menjadikan transaksi benar-benar privat adalah Transaksi Konfidensial/Rahasia.


Apa itu Transaksi Konfidensial?

Transaksi Konfidensial (CT) pertama kali didiskusikan oleh CEO Blockstream Adam Back pada tahun 2013 dan kemudian dikembangkan oleh pengembang Bitcoin Gregory Maxwell. Maxwell menguraikan masalah-masalah yang telah kita bahas sebelumnya (fungibility dan anonimitas yang lemah) – dan mengusulkan solusi. Jumlah yang ditransfer dapat dilindungi dari jaringan yang lebih luas sehingga hanya pihak yang bertransaksi yang tahu berapa banyak yang telah dikirim.
Dalam keadaan normal (transaksi dapat dilihat oleh publik), sangat mudah bagi node untuk memverifikasi bahwa jumlah yang diterima tidak melebihi jumlah yang dikirim. Jika Alice ingin mengirimkan 0,3 BTC ke Bob, dia mengambil output yang tidak digunakan (sebut saja 1 BTC) dan memecahnya menjadi dua bagian: 0,3 untuk dikirim ke Bob, dan 0,69 untuk dikirim kembali kepadanya (sisanya hangus sebagai biaya menambang).
Ini merupakan aljabar sederhana bagi node lain: 1 lebih besar dari 0,3 + 0,69, semua tanda tangan benar, input Alice belum dikirimkan kemana-mana, sehingga transaksi dikatakan valid. Namun, jika jumlahnya tidak terlihat, ini tidak dapat dianggap sepele. Bagaimana Anda dapat mengevaluasi apakah nilai yang tidak diketahui sama dengan atau lebih besar dari total kedua nilai yang lain yang juga tidak diketahui?


Sekilas pandang mengenai kriptografi yang terlibat

Untuk menyembunyikan data, enkripsi dibutuhkan. Namun, metode tradisional mirip dengan menyimpan dokumen ke dalam brankas: sekali dikunci, maka tidak akan dapat digunakan, sampai kemudian dihapus. Yang kita perlukan agar Transaksi Konfidensial dapat berfungsi adalah brankas digital yang isinya tidak diungkapkan, tetapi yang propertinya dapat diverifikasi oleh orang luar.

Jawabannya terletak pada enkripsi homomorfik secara khusus, di dalam skema yang disebut komitmen Pedersen. Jenis enkripsi ini memungkinkan orang luar untuk melakukan operasi pada data terenkripsi (yang tidak dapat mereka lihat) untuk tujuan-tujuan tertentu. 

Hash yang biasa dapat digunakan untuk mengerjakan data yang ingin Anda ungkapkan nantinya. Misalnya Anda ingin mengumumkan sebuah kompetisi di sosial media. Kompetisinya adalah setiap orang yang menebak bursa favorit Anda akan memenangkan hadiah sebesar 0,01 BTC. Para peserta mungkin akan bersikap skeptis karena bisa saja Anda melihat jawaban setelah kompetisi ditutup, dan memilih bursa yang tidak disebutkan oleh peserta manapun.

Apa yang dapat Anda lakukan adalah dengan menyediakan hash kepada follower Anda: deretan angka dan huruf yang terlihat acak yang memetakan sebuah input yang spesifik. Nama bursa Anda dilewatkan melalui sebuah rumus untuk mendapatkan output tertentu. Akan kita ilustrasikan dengan algoritme SHA256:


f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191


Dengan melihatnya, Anda tidak tahu apa inputnya. Anda juga tidak bisa membalikkan rumus untuk mendapatkannya. Namun, jika Anda tahu sebelumnya bahwa input adalah “Binance”, Anda dapat dengan mudah memeriksa bahwa hashnya cocok dengan yang tercantum di atas. Dengan cara seperti ini, follower Anda dapat menjamin bahwa Anda tidak akan mengganti jawaban saat kompetisi berakhir – ini akan menghasilkan output yang sangat berbeda.
Namun, nyatanya ini tidak terlalu aman. Meskipun follower Anda tidak dapat merekayasa balik algoritme, mereka dapat membuat daftar kemungkinan bursa, melakukan hashing satu-persatu hingga mereka mendapatkan kecocokan. Kita dapat mengurangi kemungkinan ini dengan menambahkan beberapa data acak yang disebut faktor blinding ke data yang akan di-hash. 
Jika kita memasukkan “Binance adalah bursa favorit saya saya mencintainya lebih dari bursa mana pun 2#43Wr”, akan menjadi sangat sulit bagi lawan main untuk menebak (dan demi 0,01 BTC, tentu tidak mungkin ada orang yang mau mencobanya).

Komitmen Pedersen memungkinkan kita untuk menambahkan input di belakang komitmen. Seperti yang diilustrasikan oleh Maxwell:


C(BF1 + D1) + C(BF2 + D2) = C(BF1 + BF2, D1 + D2)
Di mana BF adalah faktor blinding dan D adalah data


Dari sini ada beberapa langkah lagi yang melibatkan kriptografi kurva eliptik dan range proof, tetapi intinya adalah bahwa pengguna memiliki komitmen Pedersen untuk alamat mereka. Saat mengirim dana, dua komitmen tambahan dibuat (satu untuk alamat perubahan untuk dikembalikan kepada pengguna, dan satu untuk alamat tujuan). 

Tidak ada yang tahu berapa banyak yang dikirim, tetapi dapat diperiksa bahwa komitmen perubahan dan komitmen tujuan (sisi kiri persamaan Maxwell) ditambahkan ke alamat asal (sisi kanan persamaan). Jika ini dievalusi dengan benar, maka transaksi pengguna valid, karena dapat dibuktikan bahwa input sama dengan output.


Apa yang dapat dicapai oleh Transaksi Konfidensial?

Jika Transaksi Konfidensial diterapkan ke Bitcoin, kita akan menikmati sistem yang lebih privat. Baik input maupun output akan tersamarkan dari jaringan yang lebih luas, dan data masukan pada ledger akan dikaburkan - tetapi node masih bisa memverifikasi keasliannya. Dengan peningkatan privasi besar-besaran ini, bitcoin dapat secara efektif dianggap fungible, karena analisis chain tidak lagi mengungkapkan riwayat unit. 

Jika ditanya apakah Transaksi Konfidensial akan diintegrasikan ke dalam protokol, sepertinya tidak mungkin untuk saat ini. Dengan fungsi tambahan ini, transaksi jauh lebih besar daripada biasanya- mengingat ruang terbatas, ini hanya akan meningkatkan permintaan. Juga akan mengharuskan sebagian besar partisipan setuju untuk mengubah kode, hal yang secara tradisional terbukti sulit dilakukan.


Penutup

Transaksi Konfidensial telah dilakukan beberapa kali di mata uang kripto lain dan juga di sidechain Bitcoin. Misalnya, Monero menggunakannya dalam kombinasi dengan konstruksi yang disebut tanda tangan cincin untuk mencapai anonimitas dan fungibility. Sidechain Liquid mengimplementasikannya untuk privasi yang lebih besar, dan MimbleWimble memperluasnya dengan tujuan yang sama.

Mata uang kripto sering mengahadapi tantangan skalabilitas di lapisan dasar, dan ukuran transaksi yang lebih besar bukanlah hal yang menarik bagi sebagian orang. Karena itu, pendukung privasi meyakini bahwa sangat penting untuk menyembunyikan jumlah transaksi dan peserta untuk benar-benar memungkinkan mata uang kripto berfungsi sebagai uang yang memiliki sifat dapat ditukarkan/fungible.