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
Blockchain
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
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
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.
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
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
Risiko
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.
Bacaan lebih lanjut: