Shamir Secret Sharing adalah metode matematika yang mengubah satu rahasia menjadi beberapa bagian berbeda, disebut share. Jumlah yang ditentukan sebelumnya cukup untuk menyusun kembali rahasia; dalam skema ideal, jumlah yang lebih sedikit tidak mengungkapkan sebagian pun darinya. Adi Shamir menerbitkan metode ini pada 1979. Dalam Bitcoin, rahasia itu bisa berupa data rahasia untuk memulihkan dompet. Ini bukan memotong Seed Phrase menjadi potongan kata: share dihitung dan hanya bermakna dalam skema yang sesuai.
Dompet adalah aplikasi atau perangkat untuk menerima dan mengirim bitcoin. Anna ingin cadangan yang tetap bisa digunakan meski sebagian catatan hilang. Ia memilih tiga dari lima: dibuat lima share berbeda, dan tiga share valid mana pun dari set yang sama dapat memulihkan rahasia. Ia boleh kehilangan dua, tetapi bukan tiga. Jumlah yang diperlukan disebut ambang; secara umum k dari n berarti memerlukan k dari n share yang dibuat dan dapat kehilangan n−k. Namun ambang tidak mengenali persetujuan Anna. Jika orang lain memperoleh tiga share, atau para pemegangnya bekerja sama, mereka memulihkan rahasia yang sama. Ambang lebih rendah memudahkan pemulihan, sekaligus memperkecil kelompok yang bisa melakukannya tanpa Anna. [1] [6]
Anna tidak banyak terbantu jika menyimpan kelima berkas dalam satu akun cloud. Kehilangan atau pembobolan akun itu memengaruhi semuanya sekaligus. Cadangan memerlukan penempatan yang masuk akal, catatan metode dan parameter, serta uji pemulihan pada perangkat tepercaya. Jika rencana itu juga untuk ahli waris, mereka harus tahu apa yang dicari dan cara menanganinya dengan aman. Membagi ulang rahasia S yang sama secara acak menghasilkan set baru; share lama dan baru tidak boleh dicampur. Namun set lama yang cukup tetap dapat memulihkan S. Pembagian ulang tidak membatalkan cadangan yang sudah bocor dan masih bisa digunakan, maupun mengubah rahasianya. [1] [4]
Pemulihan biasa menyatukan kembali seluruh rahasia pada satu perangkat. Jika perangkat disusupi, penyerang dapat mengambilnya saat itu. Jika rahasianya berupa Private Key, nilai angka rahasia untuk membuat tanda tangan digital yang mengizinkan pembelanjaan dana, pemegangnya kemudian bisa menandatangani tanpa share tambahan. Sebaliknya, Multisig memerlukan beberapa tanda tangan sesuai syarat pembelanjaan tersebut. Ada pula penandatanganan ambang: dengan protokol MPC tambahan, yakni perhitungan bersama yang aman oleh beberapa peserta, share dapat membantu membuat tanda tangan tanpa menyatukan seluruh kunci. NIST membedakan situasi ini. Share Shamir saja tidak menyediakan protokol penandatanganan tersebut. [3] [5] [6]
Dua program bernama Shamir belum tentu dapat membaca share satu sama lain. Operasi matematika, pengodean nilai, pengenal share, dan keanggotaan set harus cocok. SLIP-39 adalah standar khusus yang memakai metode ini: ia menambahkan daftar kata, metadata atau informasi pendukung, kelompok, enkripsi, dan pemeriksaan kesalahan. Jadi, prinsip umum ini bukan petunjuk untuk membagi Seed Phrase yang sudah ada secara manual. Sebelum mengandalkan cadangan untuk dompet, Anda perlu mengetahui format yang didukung dan memastikan prosedur yang direncanakan benar-benar dapat memulihkannya. [2]
Dalam tiga dari lima, dampak kehilangan dua share sudah jelas. Namun share rusak atau palsu dapat membuat perhitungan dasar menghasilkan rahasia berbeda, bukan melaporkan jumlah yang kurang. Metode ini sendiri tidak membuktikan asal share atau kejujuran pembuatnya. Deteksi dan koreksi kesalahan, serta verifiable secret sharing, yaitu cara memeriksa kebenaran pembagian, merupakan lapisan tambahan dengan asumsi masing-masing. SLIP-39, misalnya, menambahkan checksum dan nilai verifikasi bernama digest. Bukan berarti setiap aplikasi Shamir Secret Sharing memiliki pemeriksaan yang sama, atau checksum benar membuktikan asal cadangan dapat dipercaya. [2] [5]
Dalam skema ideal, kurang dari k share lengkap tidak memberikan informasi baru tentang S kepada penyerang, bahkan dengan komputasi tak terbatas. Share bukan sepertiga kata asli yang bisa langsung dibaca. Sifat ini membutuhkan keacakan yang tepat: angka untuk pembagian dipilih secara independen dengan peluang yang sama. Angka yang dapat ditebak, penggunaan ulang angka, atau bocornya data rahasia dari memori perangkat mengubah situasi. Data pemeriksaan tambahan, seperti digest pada SLIP-39, juga harus dinilai terpisah. Dan kata sandi asli yang lemah tetap dapat ditebak melalui cara lain, meskipun cadangannya dibagi. [1] [2]
Ambil rahasia kecil S=5 dengan aturan f(x)=5+3*x mod 17. mod 17 berarti mengambil sisa pembagian dengan 17. Tiga share berupa pasangan (1,8), (2,11), (3,14): angka pertama menunjukkan posisi, angka kedua nilai hasil perhitungan. Dua titik pertama memberikan kenaikan 3 dan rahasia asli 8−3=5. Setiap pasangan dari tiga kemungkinan pasangan titik memulihkan lima yang sama. Namun titik (1,8) saja cocok dengan setiap S dari 0 hingga 16 jika kenaikannya dipilih sebagai a=8−S mod 17. Angka kecil ini hanya ilustrasi, bukan rancangan cadangan dompet sungguhan. [1]
Aturan umumnya adalah f(x)=S+a1*x+…+a(k−1)*x^(k−1). Bentuk ini disebut polinomial; S adalah rahasia, dan koefisien lain merupakan elemen independen yang dipilih acak seragam dari medan hingga, lingkungan dengan aturan penjumlahan dan perkalian yang tepat. Share berupa (x,f(x)), dengan setiap x berbeda dan bukan nol: x=0 akan langsung mengungkapkan S. Dari k titik, interpolasi Lagrange menghitung f(0), yakni rahasianya. Dua salinan titik yang sama tidak menambah informasi. Dalam medan prima GF(p), pembagian biasa diganti dengan perkalian oleh invers modular, yang jika dikalikan dengan pembagi menghasilkan 1. GF(256) juga memakai perhitungan berbeda dari sekadar sisa modulo 256; menyamakan keduanya adalah kesalahan. [1]
Untuk gambaran yang lebih utuh, baca entri ini bersama SLIP-39, Multisig, Seed Phrase, Private Key, Bitcoin Inheritance Plan. Entri ini juga dirujuk dari SLIP-39, FROST.