Pengarang: Omer Shlomovits, ZenGo.

Threshold Signature Scheme (TSS) adalah kriptografi primitif untuk pembuatan dan penandatanganan kunci terdistribusi. Penggunaan TSS pada klien blockchain merupakan paradigma baru yang dapat memberikan banyak manfaat, terutama dalam hal keamanan. Dalam arti yang lebih luas, TSS dapat memengaruhi desain sistem manajemen kunci (seperti dompet kripto) dan memimpin dukungan asli dalam kasus penggunaan DeFi. Meskipun demikian, TSS masih merupakan teknologi baru, sehingga risiko dan keterbatasannya juga harus dipertimbangkan.

Pada artikel ini, kita akan membahas apa itu TSS, apa saja potensi keuntungan yang dibawanya ke ruang blockchain, bagaimana hal itu dapat diimplementasikan dalam klien blockchain, bagaimana dibandingkan dengan berbagi rahasia Shamir dan Multisig, apa saja cara berbeda untuk melakukannya. gunakan TSS untuk manajemen kunci terdistribusi dan terakhir kita membahas risiko dan keterbatasannya.


Kekuatan kriptografi

Untuk memahami TSS, pertama-tama kita memerlukan pengetahuan dasar tentang kriptografi. Sejak tahun 1970an, semakin banyak sistem Internet (seperti TLS dan PGP) yang menggunakan kriptografi asimetris, yang juga dikenal sebagai kriptografi kunci publik (PKC). PKC menggunakan dua kunci: satu publik dan satu privat. Meskipun kunci publik bukanlah rahasia dan dapat dipublikasikan serta digunakan oleh siapa pun, kunci privat adalah informasi rahasia yang mewakili keamanan sistem.

Enkripsi dan tanda tangan digital adalah dua penggunaan paling umum untuk PKC. Baik skema enkripsi maupun tanda tangan digital bergantung pada tiga algoritma. Pertama adalah pembangkitan pasangan kunci privat dan publik, kedua adalah pembangkitan ciphertext/tanda tangan, dan ketiga adalah proses dekripsi/verifikasi. Terkait dengan tanda tangan digital, algoritme penandatanganan memerlukan kunci privat, yang hanya diketahui oleh pemiliknya, untuk menghasilkan tanda tangan unik. Tanda tangan dilampirkan pada pesan tertentu sedemikian rupa sehingga siapa pun yang memegang kunci publik dapat memverifikasi keaslian dan kebenarannya.


Blockchain

Tidak ada keraguan bahwa blockchain adalah teknologi yang sangat kuat. Ini menyediakan lapisan konsensus yang mengatur dan mencatat peristiwa. Infrastruktur seperti ini memberi kita, para pengguna, kekuatan potensial untuk membangun perekonomian yang terdesentralisasi dan bahkan pemerintahan. Cukup mengejutkan, kriptografi yang diperlukan untuk menjalankan blockchain dasar hanya didasarkan pada tanda tangan digital. Dalam konteks blockchain, kunci pribadi mewakili identitas sedangkan tanda tangan adalah pernyataan publik atau klaim yang dilakukan oleh suatu identitas. Blockchain akan mengatur pernyataan dan memvalidasinya sesuai dengan seperangkat aturan, yang antara lain memastikan bahwa tanda tangan tersebut tidak dapat dipalsukan dan benar.

Berbeda dengan kriptografi klasik yang digunakan dalam blockchain, perangkat kriptografi modern mencakup beberapa trik ajaib yang luar biasa: bukti tanpa pengetahuan, enkripsi homomorfik, dan komputasi multi-pihak, dan masih banyak lagi. Seperti yang kita lihat selama dekade terakhir, penelitian blockchain mendorong penerapan kriptografi secara luar biasa, dengan terobosan terbaru dalam semua hal di atas dan masih banyak lagi.

Dalam artikel ini, kami akan fokus pada satu terobosan: tanda tangan ambang aman (TSS) yang efisien.


MPC dan skema tanda tangan ambang batas (TSS)

Komputasi multi-pihak (MPC) adalah cabang kriptografi yang dimulai dengan karya penting Andrew C. Yao, hampir 40 tahun yang lalu. Dalam MPC, sekelompok pihak yang tidak percaya satu sama lain mencoba untuk bersama-sama menghitung suatu fungsi atas masukan mereka sambil menjaga kerahasiaan masukan tersebut.

Sebagai contoh, katakanlah ada n karyawan sebuah perusahaan yang ingin mengetahui siapa yang mendapat bayaran paling tinggi namun tanpa mengungkapkan gaji sebenarnya kepada satu sama lain. Di sini input privatnya adalah gaji dan outputnya adalah nama karyawan dengan gaji tertinggi. Dengan melakukan penghitungan ini menggunakan MPC, kami mendapatkan bahwa tidak ada satu pun gaji yang bocor selama penghitungan.

Dua properti utama MPC adalah kebenaran dan privasi:

  • Correctness : output yang dihasilkan suatu algoritma sudah benar (sesuai yang diharapkan).

  • Privasi: data masukan rahasia yang dimiliki salah satu pihak tidak akan bocor ke pihak lain.

Kami akan menggunakan MPC untuk menghitung tanda tangan digital secara terdistribusi. Mari kita lihat bagaimana properti di atas dapat diterapkan pada tanda tangan. Ingatlah bahwa, untuk tanda tangan, kami memiliki tiga langkah:

  • Pembuatan Kunci: langkah pertama juga merupakan yang paling rumit. Kita perlu membuat kunci yang akan bersifat publik dan digunakan untuk memverifikasi tanda tangan di masa depan. Namun, kita juga perlu membuat rahasia individual untuk masing-masing pihak, yang kita sebut sebagai secret share. Dalam hal kebenaran dan privasi, kami mengatakan bahwa fungsi tersebut akan menghasilkan kunci publik yang sama untuk semua pihak, dan pembagian rahasia yang berbeda untuk masing-masing pihak sehingga: (1) privasi: tidak ada data pembagian rahasia yang bocor di antara para pihak, dan (2) kebenaran: kunci publik adalah fungsi dari pembagian rahasia.

  • Penandatanganan: langkah ini melibatkan fungsi pembuatan tanda tangan. Masukan dari masing-masing pihak akan menjadi bagian rahasianya, yang dibuat sebagai keluaran dari langkah sebelumnya (pembuatan kunci terdistribusi). Ada juga masukan publik yang diketahui semua orang, yaitu pesan yang harus ditandatangani. Outputnya akan berupa tanda tangan digital, dan properti privasi memastikan tidak ada kebocoran bagian rahasia yang terjadi selama penghitungan.

  • Verifikasi: algoritma verifikasi tetap seperti pada pengaturan klasik. Agar kompatibel dengan tanda tangan kunci tunggal, setiap orang yang mengetahui kunci publik harus dapat memverifikasi dan memvalidasi tanda tangan tersebut. Inilah yang dilakukan oleh node validasi blockchain.

Skema tanda tangan ambang batas (TSS) adalah nama yang kami berikan pada komposisi pembuatan kunci terdistribusi (DKG) dan penandatanganan terdistribusi skema tanda tangan ambang batas.


Menggabungkan TSS dengan blockchain

Cara alami TSS dapat digunakan dalam blockchain adalah dengan mengubah klien blockchain untuk menghasilkan kunci dan tanda tangan menggunakan TSS. Di sini, kami menggunakan istilah klien blockchain untuk merujuk pada serangkaian perintah yang dijalankan oleh node penuh. Dalam praktiknya, teknologi TSS memungkinkan kita mengganti semua perintah terkait kunci privat dengan komputasi terdistribusi.

Untuk menjelaskannya lebih detail, kita mulai dengan menjelaskan secara singkat bagaimana alamat baru dibuat pada desain blockchain klasik. Sederhananya, kita dapat membuat alamat baru dengan membuat kunci privat, lalu menghitung kunci publik dari kunci privat tersebut. Terakhir, alamat blockchain diturunkan dari kunci publik.

Sekarang, dengan menggunakan TSS, kita akan memiliki sekumpulan n pihak yang bersama-sama menghitung kunci publik, masing-masing memegang bagian rahasia dari kunci privat (masing-masing bagian tidak diungkapkan kepada pihak lain). Dari kunci publik, kita dapat memperoleh alamat dengan cara yang sama seperti pada sistem tradisional, menjadikan blockchain agnostik terhadap cara pembuatan alamat. Keuntungannya adalah kunci privat tidak lagi menjadi titik kegagalan karena masing-masing pihak hanya memegang satu bagian saja.

Hal yang sama dapat dilakukan saat menandatangani transaksi. Dalam hal ini, alih-alih hanya satu pihak yang menandatangani dengan kunci pribadinya, kami menjalankan pembuatan tanda tangan terdistribusi di antara banyak pihak. Jadi masing-masing pihak bisa menghasilkan tanda tangan yang sah asalkan cukup banyak pihak yang bertindak jujur. Sekali lagi kami beralih dari komputasi lokal (satu titik kegagalan) ke komputasi interaktif.

Penting untuk disebutkan bahwa pembuatan kunci terdistribusi dapat dilakukan dengan cara yang memungkinkan berbagai jenis struktur akses: pengaturan umum “t out of n” akan mampu menahan hingga t kegagalan sewenang-wenang dalam operasi terkait kunci privat, tanpa mengorbankan keamanan.


TSS vs. Multisig

Beberapa blockchain menawarkan fungsionalitas TSS sebagai bagian perangkat lunak yang terintegrasi atau dapat diprogram. Kami menyebut fungsi ini multisig atau multi-tanda tangan. Untuk lebih memahami perbedaannya, kita dapat melihat multisig sebagai TSS di lapisan aplikasi blockchain.

Dengan kata lain, baik multisig dan TSS pada dasarnya mencoba mencapai tujuan yang sama, namun TSS menggunakan kriptografi off-chain, sedangkan multisig terjadi secara on-chain. Namun, blockchain memerlukan cara untuk menyandikan multisig, yang mungkin membahayakan privasi karena struktur akses (jumlah penandatangan) terekspos di blockchain. Biaya transaksi multisig lebih tinggi karena informasi tentang penandatangan yang berbeda juga perlu dikomunikasikan di blockchain.

Di TSS, detail penanda tangan digabungkan menjadi transaksi biasa, sehingga mengurangi biaya dan menjaga privasi. Di sisi lain, multisig bisa bersifat non-interaktif, sehingga menghemat kesulitan dalam menjalankan lapisan komunikasi yang kompleks antara penanda tangan yang berbeda.

Perbedaan utamanya adalah multisig bersifat khusus untuk blockchain dan perlu diimplementasikan ulang untuk setiap blockchain, dan dalam beberapa kasus, multisig tidak didukung sama sekali. Sebaliknya, TSS mengandalkan kriptografi murni, sehingga dukungan selalu tersedia. Artikel bagus dengan ilustrasi perbedaannya dapat ditemukan di sini.


Skema pembagian rahasia TSS vs. Shamir

Skema berbagi rahasia Shamir (SSSS) menyediakan cara untuk menyimpan kunci pribadi secara terdistribusi sehingga saat kunci pribadi dalam keadaan diam, kunci tersebut disimpan di beberapa lokasi. Ada dua perbedaan antara SSSS dan TSS:

  • Pembuatan Kunci: di SSSS, ada satu pihak yang disebut “dealer” yang bertugas menghasilkan pembagian rahasia kunci pribadi. Artinya, pada saat Pembuatan Kunci, kunci privat dihasilkan di satu lokasi dan kemudian didistribusikan oleh dealer ke lokasi berbeda. Di TSS, tidak ada dealer karena perannya didistribusikan sedemikian rupa sehingga kunci privat penuh tidak pernah berada di satu lokasi.

  • Penandatanganan: di SSSS, para pihak harus merekonstruksi seluruh kunci privat untuk menandatangani, yang lagi-lagi menghasilkan satu titik kegagalan setiap kali tanda tangan diperlukan. Di TSS, penandatanganan dilakukan secara terdistribusi tanpa pernah merekonstruksi bagian rahasianya.

Seperti yang bisa kita lihat, di TSS, kunci privat (yang mewakili keamanan sistem) tidak pernah berada di satu lokasi sepanjang masa pakainya.


Dompet ambang batas

Dompet berdasarkan teknologi TSS sedikit berbeda dari dompet mata uang kripto tradisional. Biasanya, dompet konvensional menghasilkan frase awal dan menggunakannya untuk mendapatkan alamat secara deterministik. Pengguna nantinya dapat menggunakan struktur deterministik hierarkis (HD) ini untuk 1) mendapatkan kunci pribadi yang sesuai dengan alamat dompet dan menandatangani transaksi dengannya, dan 2) memulihkan semua kunci dompet menggunakan frase benih.

Di dompet ambang batas, segalanya menjadi lebih kompleks. Meskipun dimungkinkan untuk menghasilkan struktur HD, pembangkitannya harus dihitung secara terdistribusi, seperti protokol MPC lainnya. Para pihak perlu bersama-sama memutuskan kunci apa yang selanjutnya akan digunakan. Dengan kata lain, masing-masing pihak akan memiliki frase unggulannya sendiri. Frase awal dihasilkan secara terpisah dan tidak pernah digabungkan sehingga satu pihak saja tidak dapat memperoleh kunci privat dari benihnya.

Dompet berbasis TSS, juga memiliki fitur keamanan yang bagus, yang memungkinkan rotasi kunci pribadi tanpa mengubah kunci publik dan alamat blockchain yang sesuai. Rotasi kunci pribadi, juga dikenal sebagai pembagian rahasia proaktif, adalah protokol MPC lain yang mengambil pembagian rahasia sebagai masukan, dan mengeluarkan serangkaian pembagian rahasia baru. Secret share yang lama dapat dihapus dan secret share yang baru dapat digunakan dengan cara yang sama.

Struktur seperti itu menambah dimensi waktu pada keamanan, yang berarti penyerang harus berada di beberapa lokasi secara bersamaan untuk menyerang dompet ambang batas. Menggabungkan saham rahasia sebelum rotasi dan setelah rotasi tidak akan memberikan kekuatan tambahan kepada penyerang jika ingin memalsukan tanda tangan.

Kelemahan dari jenis dompet ini adalah kurangnya frase awal membuatnya tidak kompatibel dengan sistem dompet satu kunci. Jadi penting untuk mempertimbangkan pihak mana yang akan memegang saham rahasia tersebut.

Ada beberapa kemungkinan arsitektur:

  • Outsourcing TSS: pengguna akan membiarkan server “n” menjalankan komputasi atas nama mereka. Secara efektif melakukan outsourcing pembuatan, pengelolaan, dan penandatanganan kunci kepada penyedia layanan yang bukan pemilik aset namun memberikan lapisan keamanan sebagai imbalan atas sejumlah insentif.

  • Menggunakan beberapa perangkat: Pengguna akan menjalankan TSS di antara perangkat yang mereka miliki. Misalnya - satu pihak akan menjadi perangkat IoT, pihak lain akan menjadi pengguna seluler, pihak lain akan menjadi laptopnya, dan seterusnya.

  • Hibrid: TSS akan berjalan sedemikian rupa sehingga sebagian pihak dikendalikan oleh penyedia layanan luar dan sebagian lagi dijalankan pada perangkat milik pengguna.

Metode pertama melepas beban komputasi TSS yang berat dari sisi klien pengguna. Di sisi lain, penyedia layanan dapat berkolusi (kami berasumsi cukup banyak dari mereka yang tidak diserang pada saat yang sama, namun dalam praktiknya, mereka mungkin saja) dan mencuri aset pengguna.

Metode kedua memberikan kontrol penuh kepada pengguna namun mempersulit melakukan transaksi karena Anda memerlukan beberapa perangkat untuk online dan terlibat dengan komputasi TSS.

Opsi ketiga dianggap yang terbaik dari kedua dunia karena memberikan pengguna cara yang mudah dan cepat untuk melakukan transaksi tetapi tanpa mengorbankan transaksi yang dilakukan tanpa otorisasi pengguna.


TSS dan kontrak pintar

Selama bertahun-tahun, para peneliti telah menemukan banyak kegunaan tanda tangan digital, dan beberapa di antaranya ternyata tidak sepele. Seperti disebutkan, TSS adalah kriptografi primitif yang dapat meningkatkan keamanan secara signifikan. Dalam konteks blockchain, kita dapat mengatakan bahwa banyak fungsi yang dapat digantikan dengan kriptografi berbasis TSS. Aplikasi terdesentralisasi, solusi penskalaan lapisan 2, pertukaran atom, pencampuran, pewarisan, dan banyak lagi dapat dibangun di atas kerangka kerja TSS. Hal ini pada akhirnya akan memungkinkan operasi kontrak pintar on-chain yang mahal dan berisiko digantikan oleh alternatif yang lebih murah dan lebih andal.

Untuk memberikan beberapa contoh nyata: Multi-Hop Locks memanfaatkan tanda tangan dua pihak dengan cara yang cerdas dan dapat digunakan sebagai alternatif jaringan kilat Bitcoin dengan jaringan saluran pembayaran yang lebih aman dan pribadi. ShareLock mungkin merupakan solusi pencampuran on-chain termurah untuk Ethereum, berdasarkan verifikasi tanda tangan ambang batas tunggal.


Resiko

Dalam beberapa tahun terakhir, terdapat peningkatan signifikan dalam penerapan TSS. Namun, sebagai teknologi yang relatif baru, masih terdapat beberapa keterbatasan dan kekhawatiran. Dibandingkan dengan kriptografi kunci publik klasik, protokol TSS bisa sangat kompleks dan belum “diuji dalam pertempuran”. Biasanya, TSS memerlukan asumsi kriptografi tambahan yang lebih lemah dibandingkan dengan tanda tangan digital sederhana. Hasilnya, vektor serangan kriptografi yang tidak ada dalam pengaturan tradisional kini ditemukan (lihat presentasi dari Breaking Bitcoin Conference 2019). Insinyur keamanan dan kriptografer terapan dapat membantu menerapkan TSS dengan aman di sistem Anda.

Sisi positifnya, implementasi yang sudah ada dan yang baru menjadi lebih kuat karena peningkatan kontribusi kualitas, tinjauan sejawat, audit, dan peningkatan kinerja algoritmik.


Pada artikel ini, kami memperkenalkan dasar-dasar skema tanda tangan ambang batas (TSS), yang merupakan kriptografi primitif menarik yang berpotensi mengubah secara signifikan cara kita menggunakan blockchain.

Karena artikel ini tidak membahas Threshold ECDSA yang dapat digunakan di Binance Chain dan Bitcoin, bagi yang tertarik dapat merujuk ke daftar makalah terbaru berikut. Selain itu, jika Anda ingin mencoba beberapa implementasi TSS, Anda dapat menemukan kode untuk dompet Binance Chain dua pihak di sini atau coba dompet ZenGo, yang menggunakan metode hibrid untuk menyediakan dompet Binance Chain dua pihak non-penahanan.


Bacaan lebih lanjut:

  • Penandatanganan ECDSA Dua Pihak yang Aman dan Cepat

  • ECDSA Multipartai yang Aman dan Cepat dengan Pembuatan Kunci Terdistribusi yang Praktis dan Penerapan pada Penyimpanan Mata Uang Kripto

  • ECDSA Dua Pihak dari Sistem Bukti Hash dan Instansiasi yang Efisien

  • ECDSA Ambang Batas Multipartai Cepat dengan Penyiapan Cepat Tanpa Kepercayaan

  • Amankan ECDSA Ambang Batas Dua Pihak dari Asumsi ECDSA

  • Ambang batas ECDSA dari Asumsi ECDSA: Kasus Multipartai