Shamir Secret Sharing adalah konstruksi yang diterbitkan Adi Shamir pada 1979. Rahasia dikodekan sebagai konstanta polinomial acak pada medan hingga; bukan memotong frasa atau protokol penandatanganan dengan sendirinya.
Skema k-dari-n memulihkan dari sembarang k bagian valid dan berbeda dari kumpulan yang sama. Ia menoleransi kehilangan n−k bagian, tetapi juga mengizinkan k pemegang yang bekerja sama memperoleh rahasia. Misalnya 3-dari-5 menoleransi dua kehilangan, bukan tiga. Ambang menyeimbangkan ketersediaan dan ukuran kelompok yang mampu memulihkan. [Adi Shamir — How to Share a Secret (1979)]
Untuk rahasia S pilih f(x)=S+a1*x+…+a(k−1)*x^(k−1). Koefisien selain S merupakan elemen medan independen dan acak seragam. Bagian adalah (x,f(x)) dengan x berbeda dan bukan nol; x=0 langsung mengungkap S. Interpolasi Lagrange dari k titik menentukan f(0). Dua salinan titik yang sama tidak menambah persamaan. [Adi Shamir — How to Share a Secret (1979)]
Hanya untuk belajar, ambil S=5 dan f(x)=5+3*x mod 17. Bagiannya (1,8), (2,11), (3,14). Dua pertama memberi kemiringan 3 dan konstanta 8−3=5; ketiga pasangan memulihkan 5. Titik tunggal (1,8) cocok dengan setiap S dari 0 sampai 16 jika a=8−S mod 17. Medan kecil ini bukan rancangan dompet. [Adi Shamir — How to Share a Secret (1979)]
Dalam skema ideal, kurang dari k bagian lengkap tidak memberi informasi tentang S bahkan dengan komputasi tak terbatas. Ini mengasumsikan koefisien independen yang benar dan model pengamatan tertentu. Keacakan lemah, koefisien digunakan ulang, kanal samping atau data pemeriksaan tambahan memerlukan analisis tersendiri. Pembagian tidak memperkuat rahasia lemah yang bisa ditebak melalui cara lain. [Adi Shamir — How to Share a Secret (1979)] [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes]
Pemulihan membutuhkan medan, pengodean nilai, indeks dan identitas kumpulan yang sama. Medan prima GF(p) memakai invers modular, bukan pembagian desimal; operasi GF(256) berbeda dari sisa modulo 256. SLIP-39 menambahkan daftar kata, metadata, kelompok, enkripsi dan pemeriksaan tertentu. Dua program berlabel Shamir belum tentu memiliki bagian kompatibel. [Adi Shamir — How to Share a Secret (1979)] [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes]
Interpolasi dasar tidak mengautentikasi asal bagian atau kejujuran pembagi. Titik rusak dapat menghasilkan rahasia lain alih-alih hanya melaporkan kekurangan. Deteksi, koreksi galat dan verifiable secret sharing adalah konstruksi tambahan dengan asumsi sendiri. SLIP-39 menambahkan checksum dan digest; fitur tersebut tidak otomatis ada pada semua Shamir Secret Sharing. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes] [NIST — Multi-Party Threshold Cryptography]
Pemulihan biasa menampilkan seluruh S pada satu lingkungan yang bisa membocorkannya. Berbeda dari Multisig, Shamir Secret Sharing tidak membentuk beberapa kunci tanda tangan on-chain independen. Tanda tangan ambang dapat memakai protokol MPC tambahan untuk bekerja dengan bagian tanpa merakit kunci, sebagaimana dibedakan NIST. Membagi lalu menggabungkan saja tidak memiliki sifat itu. [NIST — Multi-Party Threshold Cryptography]
Lima berkas dalam satu akun tidak memisahkan risiko kehilangan atau kompromi. Catat parameter dan uji pemulihan pada perangkat tepercaya. Polinomial acak baru dengan S sama membuat kumpulan lain yang bagiannya tidak boleh dicampur dengan yang lama. Kumpulan lama yang cukup tetap memulihkan S; pembagian ulang tidak membatalkan bagian yang sudah diperoleh atau rahasia yang bocor. [Adi Shamir — How to Share a Secret (1979)] [Trezor — Multi-share Backup]
Untuk gambaran yang lebih utuh, baca entri ini bersama SLIP-39, Multisig, Seed Phrase, Kunci Privat, Bitcoin Inheritance Plan. Entri ini juga dirujuk dari SLIP-39, FROST.