Penjelasan tentang Threshold Signatures

Bagikan
Copied to clipboard!
Penjelasan tentang Threshold Signatures

Penulis: Omer Shlomovits, ZenGo.

Skema Threshold Signature (TSS) adalah hal yang primitif secara kriptografis untuk pembuatan dan penandatanganan kunci yang dibagikan. Penggunaan TSS pada blockchain adalah paradigma baru yang menawarkan beberapa manfaat, terutama dalam hal keamanan. Dalam hal yang lebih umum, TSS dapat mempengaruhi sistim pengaturan kunci (seperti wallet kripto) dan berperan besar sebagai dukungan utama pada use case DeFi. Dengan begitu, TSS masih sebuah teknologi yang tergolong baru, sehingga risiko-risiko dan keterbatasannya sebaiknya juga diperhatikan.

Pada artikel ini, kami akan menjelaskan pengertian TSS, apa potensi manfaatnya dalam lingkungan blockchain, bagaimana itu akan diimplementasikan pada klien blockchain, bagaimana jika dibandingkan dengan Shamir secret sharing dan Multisig, apa saja alternatif penggunaan TSS untuk pengaturan kunci yang dibagikan, dan terakhir kita akan mendiskusikan risiko-risiko dan keterbatasannya.


Kekuatan Mata Uang Kripto

Untuk memahami TSS, lebih dahulu kita membutuhkan pengetahuan dasar tentang kriptografi. Sejak sekitar tahun 1970, semakin banyak sistim internet (seperti TLS dan PGP) menggunakan kriptografi asimetris, yang juga dikenal dengan Public key cryptography (PKC). PKC memanfaatkan dua kunci: satu umum dan satu rahasia. Public key tidak bersifat rahasia dan dapat disebarkan dan digunakan siapa saja, sedangkan private key adalah informasi yang bersifat rahasia yang merepresentasikan keamanan sistim.

Enkripsi dan tanda tangan digital adalah dua penggunaan PKC yang paling umum. Baik skema enkripsi dan juga tanda tangan digital mengandalkan 3 set algoritma. Pertama adalah pembuatan pasangan private dan public key, kedua adalah pembuatan ciphertext/tanda tangan, dan ketiga adalah proses dekripsi/verifikasi. Pada tanda tangan digital, algoritma penandatanganan membutuhkan private key, yang hanya diketahui oleh pemiliknya, untuk menghasilkan tanda tangan yang unik. Tanda tangan terlampir pada pesan yang diberikan dengan cara dimana setiap orang yang memiliki public key akan dapat memverifikasi kebenaran dan keasliannya.


Blockchain

Tidak diragukan lagi bahwa blockchain adalah sebuah teknologi yang sangat berpengaruh. Teknologi ini menyediakan lapisan konsensus yang menata dan merekam aktifitas. Sebuah infrastruktur seperti ini memberikan kita, para pengguna, potensi kemampuan untuk membangun ekonomi dan bahkan pemerintahan yang tidak terpusat. Cukup mengejutkan, yang dibutuhkan kriptografi untuk menjalankan sebuah blockchain sederhana dapat berdasarkan hanya pada tanda tangan digital. Dalam konteks blockchain, private key mewakili identitas, sedangkan tanda tangan adalah sebuah pernyataan publik atau klaim yang dilakukan oleh sebuah identitas. Blockchain akan memesan pernyataan-pernyataan dan memvalidasinya sesuai dengan aturan-aturan yang sudah dibuat, yang memastikan, salah satunya bahwa tanda tangan tersebut benar dan tidak bisa dibantah.

Berbeda dengan kriptografi yang lebih klasik yang digunakan dalam blockchain, toolbox kriptografi modern mencakup beberapa trik sulap yang mengagumkan: zero-knowledge proofs, diantaranya enkripsi homomorfik, dan perhitungan multi-lapisan. Sepeti kita lihat pada dekade lalu, penelitian blockchain didorong untuk mengaplikasikan kriptografi secara besar-besaran, dengan terobosan terbaru di semua hal di atas dan yang lainnya. 

Pada artikel ini, kita akan berfokus pada satu terobosan: threshold signatures (TSS) yang efisien dan aman.


MPC dan skema threshold signature (TSS)

Multi-party computation (MPC) adalah satu cabang dari kriptografi yang dimulai dengan pekerjaan seminal dari Andrew C. Yao, hampir 40 tahun yang lalu. Pada MPC, satu set dari kumpulan (parties) yang tidak mempercayai satu sama lain, mencoba untuk bersama-sama menghitung fungsi atas input mereka sambil menjaga input tersebut tetap privat. 

Sebagai contoh, katakan saja n karyawan di sebuah perusahaan ingin mengetahui siapa yang digaji paling besar tetapi tanpa memberitahu orang lain gaji mereka yang sebenarnya. Di sini private inputnya adalah gaji dan outputnya adalah nama karyawan dengan gaji tertinggi. Dengan melakukan penghitungan ini menggunakan MPC, kita bisa melihat bahwa tidak ada satu gajipun yang bocor selama penghitungan. 

Dua bagian penting dari MPC adalah kebenaran dan privasi:

  • Kebenaran: Output yang dihasilkan oleh algoritma adalah benar/tepat (sesuai dengan yang diharapkan).

  • Privasi: data input rahasia yang disimpan oleh satu pihak tidak bocor ke pihak lain.

Kita akan menggunakan MPC untuk menghitung tanda tangan digital secara terdistribusi. Mari kita lihat bagaimaa bagian-bagian di atas dapat diaplikasikan pada tanda tangan. Harap diingiat, untuk tanda tangan, kita memiliki tiga langkah: 

  • Pembuatan kunci: langkah pertama adalah juga yang paling komplex. Kita harus membuat sebuah kunci yang bersifat publik dan digunakan untuk memverifikasi tanda tangan di masa depan. Tetapi, kita juga harus membuat rahasia individual untuk masing-masing pihak yang akan kita sebut dengan  secret share. Dalam hal ketepatan dan privasi, dapat dikatakan bahwa fungsi ini akan menghasilkan public key yang sama untuk semua pihak, dan secret share untuk masing-masing seperti: (1) privasi: tidak ada data secret shares yang bocor di antara para pihak, dan (2) ketepatan: public key adalah fungsi dari secret shares.

  • Penandatanganan: langkah ini adalah fungsi pembuatan tanda tangan. Input dari setiap pihak akan menjadi secret sharenya, dibuat sebagai output dari langkah sebelumnya (pembuatan kunci terdistribusi). Ada juga public input yang diketahui oleh semua pihak, yang adalah pesan untuk ditandatangani. Output akan menjadi sebuah tanda tangan digital, dan bagian privasi memastikan bahwa tidak ada kebocoran secret shares selama penghitungan.

  • Verifikasi: algoritma verifikasi akan tetap seperti adanya dalam pengaturan klasik. Agar sesuai dengan tanda tangan single key, setiap orang yang mengetahui public key seharusnya dapat untuk memverifikasi dan memvalidasi tanda tangan. Inilah apa yang sebenarnya dilakukan oleh blokchain dalam memvalidasi nodes.

Skema threshold signature (TSS) adalah nama yang kita berikan untuk komposisi distributed key generation (DKG) ini dan didistribusikan menandatangani skema threshold signature.


Menggabungkan TSS dengan blockchain

Cara alami dalam hal TSS dapat digunakan dalam semuah blockchain adalah dengan mengubah satu klien blockchain untuk membuat kunci-kunci dan tanda tangan - tanda tangan menggunakan TSS. Di sini, kita menggunakan istilah klien blockchain untuk merujuk ke sekumpulan perintah yang dijalankan oleh sebuah node penuh. Pada praktiknya, teknologi TSS memperbolehkan kita untuk mengganti semua private key yang terhubung dengan perintah dengan penghitungan - penghitungan yang terdistribusi.

Untuk menjelaskannya dengan lebih terperinci, kita mulai dengan menggambarkan secara singkat bagaimana alamat yang baru dibuat dalam desain blockchain yang klasik.  Sederhananya, kita dapat menciptakan sebuah alamat baru dengan membuat sebuah private key, dan kemudian menghitung public key dari private key. Akhirnya, public addres diturunkan dari public key.

Sekarang, dengan menggunakan TSS, kita akan memiliki satu set dari n pihak-pihak bersama-sama menghitung public key, masing-masing meyimpan sebuah secret share dari private key (individual share tidak dibocorkan ke pihak lain). Dari public key, kita dapat menurunkan public address dengan cara yang sama dengan sistim tradisional, membuat agnostik blockchain dengan bagaimana alamat dihasilkan. Manfaatnya adalah bahwa private key bukan lagi sebuah titik kegagalan karena masing-masing pihak hanya memegang satu bagian saja. 

Hal yang sama daat dilakukan ketika menandatangani transaksi. Pada hal ini, alih-alih satu pihak menandatangani dengan private key, kita menjalankan pembuatan tanda tangan terdistribusi antara banyak pihak. Jadi masing-masing pihak dapat menghasilkan sebuah tanda tangan yang valid sepanjang mereka bertindak jujur. Sekali lagi kita berpindah dari penghitungan lokal (single point of failure) ke penghitungan interaktif.

Sangat penting disebutkan bahwa pembuatan kunci terdistribusi dapat dilakukan dengan cara yang memungkinkan berbagai jenis struktur akses: umum “t diluar n” pengaturan akan dapat menahan sampai t kegagalan sewenang-wenang dalam proses yang terkait dengan private key, tanpa mengganggu keamanan.


TSS vs. Multisig

Beberapa blockchain menawarkan fungsi TSS sebagai bagian yang tertanam dan bisa diprogram pada software. Kita menyebut fungsi ini multisig atau multi-tanda tangan. Untuk mengerti perbedaanya lebih baik, kita dapat melihat multisig sebagai sebuah TSS di lapisan aplikasi pada blockchain.

Ditempatkan terpisah, baik multisig maupun TSS pada intinya mencoba mencapai tujuan yang sama, tetapi TSS menggunakan kriptografi off-chain, sedangkan multisig ada pada on-chain. Namun, blockchain membutuhkan cara untuk menyandikan multisig, yang dapat membahayakan privasi karena struktur akses (jumlah penandatangan) diekspos di blockchain. Biaya transaksi multisig lebih tinggi karena informasi pada penandatangan yang berbeda juga harus dikomunikasikan di blockchain.

Dalam TSS, rincian-rincian para penandatangan disimpan ke dalam transaksi yang terlihat biasa, mengurangi biaya dan menjaga privasi. Di sisi lain, multisig dapat bersifat tidak interaktif, sehingga ini dapat menyelesaikan gangguan dari lapisan komunikasi yang kompleks di antara penanda tangan yang berbeda.

Poin penting dari perbedaan ini adalah bahwa multisig membutuhkan blockchain khusus dan perlu diterapkan kembali untuk setiap blockchain, dan dalam beberapa kasus, ini tidak didukung sama sekali. Sebaliknya, TSS mengandalkan kriptografi murni, jadi dukungan selalu tersedia. Sebuah artikel yang bagus dengan ilustrasi tentang perbedaan ini dapat ditemukan di sini.


TSS vs. Skema Shamir secret sharing

Skema Shamir secret sharing (SSSS) menawarkan sebuah cara untuk menyimpan private key yang terdistribusi, yang berarti private key disimpan di banyak lokasi. Ada dua perbedaan antara SSSS dan TSS:

  • Pembuatan kunci: dalam SSSS, ada satu pihak yang disebut dengan “dealer” yang bertugas membuat secret shares dari private key. Itu berarti pada saat pembuatan kunci, private key dibuat pada sebuah lokasi dan kemudian didistribusikan oleh dealer ke lokasi-lokasi berbeda. Dalam TSS, tidak ada dealer karena perannya didistribusikan sedemikian rupa sehingga private key sepenuhnya tidak pernah ada di satu lokasi.

  • Penandatanganan: dalam SSSS, pihak-pihak harus merekonstruksi private key sepenuhnya untuk menandatangani, yang lagi lagi menyebabkan titik kegagalan setiap kali sebuah tanda tangan dibutuhkan. Dalam TSS, penandatanganan dilakukan dengan cara terdistribusi tanpa merekonstruksi secret shares.

Seperti yang dapat kita lihat, dalam TSS, private key (yang mewakili keamanan sistim) tidak pernah berada pada satu lokasi sepanjang hidunya.


Dompet threshold

Sebuah dompet (wallet) yang didasarkan pada teknologi TSS sedikit berbeda dengan wallet mata uang kripto tradisional. Secara khusus, wallet konvensional menghasilkan sebuah seed phrase dan menggunakannya untuk untuk menentukan alamat secara deterministik. Pengguna kemudian dapat menggunakan struktur deterministik hirarkis (HD) ini untuk 1) mencapai private key yang berkoresponden ke public address wallet dan menandatangani transaksi-transaksi dengannya, dan 2) untuk memulihkan semua kunci wallet menggunakan seed phrase.

Dalam sebuah threshold wallet, semua hal lebih kompleks. Walaupun memungkinkan untuk menghasilkan sebuah struktur HD, proses ini haruslah dihitung secara terdistribusi, sebagai protokol MPC yang berbeda. Pihak-pihak harus bersama-sama memutuskan kunci mana yang akan digunakan selanjutnya. Dengan kata lain, setia pihak harus memiliki sebuah seed phrase. Seed phrase dihasilkan secara terpisah dan tidak pernah digabungkan sehingga satu pihak sendiri tidak dapat menurunkan private key dari seednya.

Wallet-wallet yang berdasar pada TSS, juga memiliki perangkat keamanan yang bagus, yang memungkinkan rotasi private key tanpa mengubah koresponden publick key dan alamat blockchain. Rotasi private key, juga dikenal sebagai secret sharing yang proaktif, adalah protokol MPC berbeda yang mengambil secret shares sebagai input, dan mengeluarkan set secret shares yang baru. Secret shares yang lama dapat dihapus dan yang baru dapat digunakan dengan cara yang sama.

Struktur seperti ini menambahkan dimensi waktu pada keamanan, yang berarti satu peyerang harus berada pada banyak lokasi di waktu yang sama untuk menyerang sebuah threshold wallet. Menggabungkan secret shares sebelum dan sesudah rotasi tidak akan memberi penyerang kekuatan ekstra jika mereka ingin memalsukan tanda tangan. 

Kelemahan dari jenis wallet ini adalah seed phrase membuatnya tidak kompetibel dengan sistim single-key wallet. Jadi sangat penting untuk memikirkan pihak mana yang akan menyimpan secret shares.

Ada beberapa arsitektur yang memungkinkan:

  • Outsourcing TSS: pengguna akan membiarkan “n” server untuk menjalankan penghitungan atas nama mereka. Mengalihkan pembuatan kunci, manajemen, dan penandatanganan secara efektif ke penyedia layanan yang bukan pemilik aset tetapi memberikan lapisan keamanan sebagai imbalan.

  • Menggunakan beberapa perangkat: Pengguna akan menjalankan TSS dengan perangkat-perangkat yang mereka miliki. Sebagai contoh - satu pihak adalah perangkat IoT, pihak yang lain adalah telefon genggam pengguna, pihak yang lainnya lagi adalah laptop, dan begitu seterusnya.

  • Hybrid: TSS akan mejalankan sesuatu seperti beberapa pihak dikendalikan oleh penyedia layanan dari luar dan beberapa pihak lainnya menjalankan perangkat-perangkat yang dimiliki pengguna.

Metode pertama meringankan beban penghitungan TSS dari sisi klien pengguna. Di sisi lain, penyedia layanan dapat bekerja sama (kita berasumsi mereka tidak diserang pada saat yang sama, tetapi pada prakteknya, ini bisa saja terjadi) dan mencuri aset pengguna.

Metode yang kedua memberikan pengguna kendali penuh tetapi ini rumit untuk membuat transaksi karna dibutuhkan banyak perangkat untuk online dan melakukan penghitungan TSS.

Opsi ketiga dianggap yang terbaik dari kedua sisi karena pengguna dapat melakukan transaksi dengan mudah dan cepat dan tidak perlu takut karena transaksi tidak dapat terlaksana tanpa otorisasi pengguna.


TSS dan smart contracts 

Selama bertahun-tahun, para peneliti telah menemukan banyak kegunaan dari tanda tangan digital, dan yang lebih mengejutkan, beberapa di antaranya tidaklah sepele. Seperti telah disebutkan, TSS adalah sebuah kriptografi primitif yang dapat meningkatkan keamanan dengan baik. Dalam konteks blockchain, dapat dikatakan bahwa banyak fungsionalitas dapat digantikan dengan kritografi yang berbasis TSS. Aplikasi-aplikasi tak terpusat, solusi scaling lapisan 2, atomic swaps, pencampuran, pewarisan, dan yang lainnya lagi dapat dibangun di atas sebuah framework TSS. Pada akhirnya ini akan memungkinkan proses smart contract on-chain yang mahal dan berisiko digantikan dengan alternatif yang lebih murah dan dapat diandalkan.

Sebagai contoh konkrit: Multi-Hop Locks menggunakan tanda tangan dua pihak dengan cara yang cerdas dan dapat digunakan sebagai alternatif pada jaringan lightning Bitcoin dengan sebuah saluran pembayaran yang lebih aman dan privat. ShareLock mungkin adalah solusi campuran on-chain yang paling murah untuk Ethereum, berdasarkan pada verifikasi dari sebuah tanda tangan single threshold.


Risiko

Dalam beberapa tahun terakhir, terdapat peningkatan implementasi TSS yang signifikan. Namun, sebagai teknologi yang relatif baru, ini masih meiliki beberapa keterbatasan. Dibandingkan dengan kriptografi public key klasik, protokol TSS bisa jadi sangat kompleks dan belum “teruji”. Biasanya, TSS membutuhkan asumsi kriptografi tambahan yang lebih lemah jika dibandingkan dengan tanda tangan digital yang sederhana. Hasilnya, vektor serangan kriptografi yang tidak ada dalam pengaturan tradisional sekarang sedang ditemukan (lihat  presentasi  ini dari Breaking Bitcoin Conference 2019). Teknisi keamanan dan kriptografer terapan dapat membantu menyebarkan TSS ke dalam sistim dengan aman.


Ide penutup

Pada artikel ini, kami memperkenalkan dasar dari skema threshold signature (TSS), yang adalah sebuah kriptografi primitif yang sangat menarik yang berpotensi mengubah cara kita menggunakan blockchain secara signifikan.

Karena artikel ini tidak mendiskusikan ECDSA Threshold yang dapat digunakan pada Binance Chain dan Bitcoin, maka yang tertarik pada topik ini dapat merujuk pada daftar paper terbaru di bawah ini. Jika Anda ingin bermain-main dengan implementasi TSS Anda dapat menemukan sebuah kode untuk two-party Binance Chain wallet di sini, atau mencoba ZenGo wallet, yang menggunakan metode hybrid untuk menyediakan two-party Binance Chain wallet yang non-custodial.


Bacaan lebih lanjut:

Loading