Bỏ qua điều hướng
Key Management · Cryptography
Bài toán cổ điển: Bạn muốn 5 lãnh đạo công ty cùng backup một secret quan trọng, nhưng bất kỳ 3 người nào cũng có thể recover — không cần cả 5. Và bất kỳ 2 người nào không được biết gì về secret. Shamir Secret Sharing giải quyết bài toán này bằng toán học polynomial đơn giản nhưng thanh lịch, với bảo mật tuyệt đối về mặt lý thuyết thông tin.

Shamir Secret Sharing Là Gì?
Polynomial Secret Splitting và SLIP-39

Chia private key thành N phần, cần M phần để recover — bảo mật information-theoretic, không thể phá dù có máy tính lượng tử.

📅 Cập nhật: 03/2026 ⏱ Đọc ~12 phút 🏷 SSS · SLIP-39 · Key Backup ✍ ZRO Research
📋 Tóm tắt — Đọc trong 60 giây

SSS: Toán Học Chia Secret Không Mất Thông Tin

Shamir Secret Sharing (SSS) là thuật toán mật mã cho phép chia một secret (private key, seed entropy) thành N shares, sao cho bất kỳ K shares nào (K ≤ N) có thể reconstruct secret đầy đủ, nhưng K−1 shares bất kỳ không tiết lộ bất kỳ thông tin gì. Tính chất bảo mật này là information-theoretic — không thể phá dù có máy tính lượng tử.

Điểm yếu cốt lõi: để dùng secret (ví dụ ký transaction), phải reconstruct đầy đủ tại một máy — tạo ra điểm tấn công tạm thời. Đây là lý do MPC (TSS) ra đời để khắc phục cho operational signing. SSS vẫn là giải pháp tốt nhất cho backup và recovery dài hạn.

01 · Cơ chế

Polynomial bậc K−1, secret là f(0), shares là f(1)…f(N)

02 · Bảo mật

Information-theoretic: K−1 shares không tiết lộ gì về secret

03 · SLIP-39

Chuẩn Trezor: chia master seed thành mnemonic shares

04 · Giới hạn

Cần reconstruct key tại một máy — MPC tốt hơn cho signing thường xuyên

01

Shamir Secret Sharing Là Gì — Polynomial Secret Splitting

SSS được đề xuất bởi Adi Shamir — đồng tác giả RSA — năm 1979 trong paper "How to Share a Secret". Đây là một trong những paper cryptography ngắn nhất (chỉ 4 trang) nhưng ảnh hưởng nhất trong lịch sử bảo mật.

Ý tưởng cốt lõi dựa trên một tính chất hình học đơn giản:

  • Hai điểm xác định duy nhất một đường thẳng (polynomial bậc 1).
  • Ba điểm xác định duy nhất một parabol (polynomial bậc 2).
  • K điểm xác định duy nhất một polynomial bậc K−1.

SSS khai thác tính chất này: secret là giá trị của polynomial tại x = 0. Các shares là giá trị tại x = 1, 2, 3, …, N. Với đủ K shares, có thể xác định polynomial duy nhất và tính f(0) = secret. Với K−1 shares, có vô số polynomial bậc K−1 pass qua K−1 điểm đó — không thể biết cái nào đúng, do đó không học được gì về secret.

🔬
Bối cảnh lịch sử
Cùng năm 1979, George Blakley cũng phát minh một scheme tương tự dựa trên hyperplane geometry thay vì polynomial — hai phương pháp độc lập, cùng giải quyết bài toán. SSS của Shamir trở nên phổ biến hơn vì hiệu quả hơn về mặt kích thước shares. Cả hai đều có tính chất information-theoretic security — khác với các scheme sau này dùng computational security.

Ứng dụng trong blockchain

Trong context wallet security, secret cần được chia thường là:

  • BIP-39 entropy (128 hoặc 256 bit ngẫu nhiên tạo ra seed phrase) — chia entropy, mỗi share là một chuỗi bytes.
  • Master private key — chia trực tiếp key 256-bit.
  • Decryption key của encrypted backup — chia key dùng để decrypt một database.

Kết quả: thay vì lưu một seed phrase duy nhất (single point of failure), bạn phân phối N shares đến N vị trí/người khác nhau. Mất bất kỳ N−K shares nào vẫn recover được; kẻ tấn công cần đủ K shares mới có thể dùng.

02

Toán Học Đằng Sau SSS — Lagrange Interpolation

Toán học của SSS hoạt động trên finite field GF(p) — tập số nguyên modulo một số nguyên tố p. Phải dùng finite field thay vì số thực để tránh floating point errors và đảm bảo tính chất information-theoretic. Trong thực tế, p thường là 2²⁵⁶ hoặc một số nguyên tố 256-bit lớn.

Shamir Secret Sharing — Công Thức
f(x) = a₀ + a₁x + a₂x² + ⋯ + aₖ₋₁xᵏ⁻¹ (mod p)
a₀ = secret | a₁…aₖ₋₁ = random coefficients | Share i = (i, f(i))

Để recover secret từ K shares, dùng Lagrange interpolation — công thức toán học xác định duy nhất polynomial bậc K−1 khi biết K điểm trên đó, rồi tính giá trị tại x = 0:

Lagrange Interpolation để tính f(0)
f(0) = Σᵢ yᵢ · ∏ⱼ≠ᵢ (0 − xⱼ)/(xᵢ − xⱼ) (mod p)
Với mỗi share (xᵢ, yᵢ) — tính Lagrange basis polynomial Lᵢ(0) rồi tổng hợp
# Ví dụ minh họa: 2-of-3 SSS trên GF(7) # Secret = 3, threshold K = 2, shares N = 3 # Bước 1: Tạo polynomial bậc K-1 = 1 # f(x) = a0 + a1*x (mod 7) a0 = 3 # secret — hệ số tự do a1 = 2 # random coefficient # Bước 2: Tạo 3 shares: (x, f(x) mod 7) share1 = (1, (3 + 2*1) % 7) → (1, 5) share2 = (2, (3 + 2*2) % 7) → (2, 0) share3 = (3, (3 + 2*3) % 7) → (3, 2) # Bước 3: Recovery chỉ dùng share1 (1,5) và share3 (3,2) # Lagrange basis tại x=0: # L1(0) = (0-3)/(1-3) mod 7 = (-3)/(-2) = 3 * modinv(5,7) = 3*3 = 9 ≡ 2 (mod 7) # L3(0) = (0-1)/(3-1) mod 7 = (-1)/(2) = 6 * modinv(2,7) = 6*4 = 24 ≡ 3 (mod 7) # f(0) = y1*L1(0) + y3*L3(0) f_0 = (5*2 + 2*3) % 7 = (10 + 6) % 7 = 16 % 7 = 3 ✓ (đúng secret!)

Trong thực tế, p là số nguyên tố 256-bit và các shares là byte strings dài tương đương. Thư viện như python-secretsharing, secrets.js (JavaScript), hay tss-lib xử lý toàn bộ chi tiết modular arithmetic này.

🔐
Information-theoretic security — Tại sao mạnh hơn AES?
AES-256 an toàn vì tấn công brute-force không khả thi về mặt tính toán — nhưng về lý thuyết, nếu có máy tính đủ mạnh, có thể phá. SSS với K−1 shares mạnh hơn theo nghĩa toán học: kẻ tấn công có thể thử mọi giá trị possible của secret và tất cả đều "có vẻ đúng" với K−1 shares họ đang có. Không có thông tin nào để phân biệt đúng/sai — ngay cả máy tính lượng tử cũng không giúp được.
03

K-of-N Shares — Chọn Threshold Phù Hợp

Cấu hình K-of-N có hai tham số: K (threshold) là số shares tối thiểu cần để recover, và N (total) là tổng số shares tạo ra. Chọn đúng K và N là bài toán cân bằng giữa security (K cao hơn = khó attack hơn) và availability (K thấp hơn = dễ recover hơn).

Cấu hìnhChịu mất tối đaPhù hợp khiRủi ro
2-of-3 1 share Cá nhân hoặc small team, recovery dễ 2 shares bị compromise cùng lúc là mất
2-of-5 3 shares Redundancy cao, phân tán rộng Threshold thấp — chỉ cần 2 trong 5 bị lộ
3-of-5 2 shares Tổ chức, board quản lý Cần 3 người cùng tham gia recovery
4-of-7 3 shares High-value institutional backup Phức tạp trong vận hành
5-of-9 4 shares Rất phân tán, chịu được nhiều mất mát Nếu distribution kém sẽ tạo false sense of security
⚠️
Ronin Bridge — 5-of-9 đúng cấu hình nhưng sai distribution
Ronin Bridge ($625M hack, 2022) dùng 5-of-9 multisig — về mặt số học là cấu hình tốt. Nhưng 4 trong 9 validator nodes đều thuộc Axie Infinity, và 1 node thuộc một đối tác tin cậy. Kẻ tấn công (có khả năng là Lazarus Group) compromise được 5 nodes liên quan. Bài học: N-of-M scheme an toàn đến mức nào phụ thuộc vào independence của distribution — không chỉ con số K và N. Điều này áp dụng cho cả SSS lẫn Multisig.

Nguyên tắc phân phối shares

  • Vật lý tách biệt: Mỗi share lưu ở địa điểm khác nhau — không cùng tòa nhà, không cùng thành phố với các share khác.
  • Người giữ độc lập: Các người giữ share không có quan hệ tổ chức hay gia đình — để tránh một compromise dẫn đến nhiều shares bị lộ.
  • Không lưu metadata: Người giữ share không cần biết (và không nên biết) bao nhiêu share tổng cộng, ai giữ share nào.
  • Đánh số thứ tự, không đánh nhãn nội dung: Share chỉ cần label "Share 1/3" — không label "Private key của ví ETH công ty."
04

SSS vs Multisig — Khác Nhau Ở Tầng Nào

SSS và Multisig đều yêu cầu nhiều bên tham gia, nhưng hoạt động ở hai tầng hoàn toàn khác nhau và phù hợp với các mục đích khác nhau.

Tiêu chíSSSMultisig (Gnosis Safe)
Tầng hoạt độngOff-chain, thuần mật mãOn-chain, Smart Contract
Key reconstructionCần reconstruct full key tại một máyKhông reconstruct — từng signer giữ key riêng
Signing flowCollect shares → reconstruct → sign → dùng xong xóaTừng signer ký riêng → submit on-chain
Audit trailOff-chain — ai collect shares? Không có record on-chainMọi approval visible trên block explorer
Chain supportMọi blockchain và hệ thống (off-chain)Chỉ EVM chains có Smart Contract support
Gas costKhông tốn gas~50–100k gas overhead mỗi transaction
Phù hợp nhấtLong-term key backup, disaster recoveryOperational treasury, DAO governance

Kết luận thực tế: SSS và Multisig không phải thay thế nhau — nhiều tổ chức dùng cả hai: Multisig để vận hành hàng ngày (transparency, auditability), SSS để backup master keys trong trường hợp disaster recovery khi toàn bộ multisig setup bị mất.

Xem thêm Multisig Wallet Là Gì? Gnosis Safe và M-of-N Setup.

05

SSS vs MPC — Điểm Yếu Cốt Lõi Của SSS

Đây là so sánh quan trọng nhất để hiểu SSS nên được dùng ở đâu và không nên dùng ở đâu.

SSS vs MPC — Điểm Khác Biệt Cốt Lõi Khi Signing
SSS (Shamir Secret Sharing):
Party A ─ Share A ─┐
Party B ─ Share B ─┤ RECONSTRUCT → Full Key Sign → Xóa key
Party C ─ Share C ─┘
↑ Key tồn tại tại một điểm — attack window!

MPC / TSS:
Party A ─ Share A ─┐
Party B ─ Share B ─┤ MPC PROTOCOL → Valid Signature
Party C ─ Share C ─┘ (multi-round interactive)
↑ Full key KHÔNG bao giờ tồn tại ở bất kỳ đâu
Tiêu chíSSSMPC / TSS
Key reconstructionCần reconstruct tại 1 máyKhông bao giờ reconstruct
Attack windowTồn tại khi reconstruction diễn raKhông có attack window
Parties online cùng lúcKhông cần — collect shares rồi reconstruct offlinePhải online đồng thời (liveness requirement)
ComplexityĐơn giản — toán học rõ ràngPhức tạp — giao thức nhiều round
Implementation riskThấp — well-understoodCao hơn — bugs trong protocol có thể nghiêm trọng
Phù hợp choBackup, disaster recovery, infrequent useOperational signing, hot wallet, frequent use

Nếu frequency signing cao (hàng ngày hoặc nhiều lần mỗi ngày), MPC là lựa chọn tốt hơn vì không có risk mỗi lần signing. Nếu signing hiếm (vài lần mỗi năm, emergency recovery), SSS đơn giản và đủ an toàn.

Tìm hiểu chi tiết hơn về MPC tại MPC Wallet Là Gì?

06

SLIP-39 — Shamir Backup Cho Seed Phrase

SLIP-39 (Shamir's Secret Sharing for Mnemonic Codes) là chuẩn được phát triển bởi SatoshiLabs (Trezor) để áp dụng SSS vào seed phrase backup. Thay vì một mnemonic BIP-39 duy nhất, SLIP-39 tạo ra nhiều mnemonic shares — mỗi share là một chuỗi 20 hoặc 33 từ.

Cấu trúc SLIP-39

SLIP-39 mở rộng SSS cơ bản với khái niệm group threshold — cho phép cấu hình phức tạp hơn:

  • Group threshold G: Cần ít nhất G nhóm thỏa mãn threshold của mình.
  • Mỗi nhóm có threshold riêng: Nhóm A cần 2-of-3 shares, nhóm B cần 1-of-2 shares.

Ví dụ cấu hình thực tế: Cần 2 trong 3 nhóm — Nhóm "Gia đình" (2-of-3), Nhóm "Luật sư" (1-of-2), Nhóm "Két sắt" (1-of-1). Đây cho phép nhiều kịch bản recovery khác nhau mà không có single point of failure nào.

# SLIP-39 share — ví dụ cấu trúc 20 từ # Mỗi từ mã hóa 10 bits — tổng 200 bits payload Share 1/3 (nhóm A, share 1): academic acid acne apart Duke adjust agency alive always answer beard beyond bolt branch branch burden busy careful carpet cargo # Cấu trúc payload của mỗi share: # [identifier 15b][extendable 1b][iteration_exponent 4b] # [group_index 4b][group_threshold 4b][group_count 4b] # [member_index 4b][member_threshold 4b] # [value 128b hoặc 256b] # [checksum 30b — RS1024]

SLIP-39 vs BIP-39 — So sánh

Tiêu chíBIP-39SLIP-39
Số lượng phrases1 phrase duy nhất (12 hoặc 24 từ)N shares, mỗi share 20 hoặc 33 từ
ThresholdKhông có — cần đúng 1 phraseK-of-N, hỗ trợ group threshold
Passphrase supportCó (từ thứ 25)Có (encryption passphrase)
Hardware wallet supportTrezor, Ledger, tất cảTrezor Model T, Model One (firmware mới)
Wordlist2.048 từ tiếng Anh1.024 từ tiếng Anh (tập con của BIP-39)
Error detectionChecksum 4-bit (yếu)RS1024 — phát hiện lỗi mạnh hơn nhiều
⚠️
Trezor vs Ledger — Compatibility quan trọng
Trezor Model T và Model One (firmware ≥ 2.3.0) hỗ trợ SLIP-39 native — có thể tạo và restore trực tiếp. Ledger không hỗ trợ SLIP-39 natively. Nếu dùng Ledger và muốn SSS backup, cần reconstruct entropy từ shares trên máy an toàn trước, sau đó nhập dạng BIP-39 25-word (entropy raw). Đây là thao tác nguy hiểm — key tồn tại briefly trên máy. Hãy thực hiện trên air-gapped machine.
07

Ứng Dụng Thực Tế và Giới Hạn

Khi nào nên dùng SSS

  • Backup seed phrase cá nhân: Chia 2-of-3, lưu ở nhà, ngân hàng, và người thân tin cậy — thay cho một tờ giấy duy nhất.
  • Kế hoạch kế thừa: Chia key với điều kiện recovery yêu cầu kết hợp thừa kế + luật sư + ngân hàng.
  • Disaster recovery key: Encryption key của backup database — chia cho các admin khác nhau trong tổ chức.
  • Bootstrap key cho MPC: Master key dùng để khởi tạo MPC system — share qua SSS trong quá trình setup, sau đó mỗi node nhận share và key được deleted.

Giới hạn và rủi ro thực tế

  • Reconstruction attack surface: Khi collect đủ shares, full key tồn tại tại một máy — nếu máy bị malware hoặc không air-gapped, key có thể bị steal ngay lúc reconstruction.
  • Share custody không tốt: SSS bảo vệ mathematical — không bảo vệ nếu shares được lưu thiếu an toàn (text file, email). Mỗi share cần được bảo vệ như một secret riêng biệt.
  • Không có on-chain accountability: Ai collect shares, ai trigger reconstruction, khi nào — hoàn toàn off-chain và không có audit trail tự động. Với tổ chức, cần process kiểm soát riêng.
  • Share vật lý dễ mất hoặc hỏng: Giấy cháy, kim loại bị mài mòn — cần backup của backup, tăng complexity.
🔑
Best Practice: SSS cho cá nhân
Setup 2-of-3: Share 1 — Lưu trong két sắt tại nhà (hoặc safe deposit box ngân hàng). Share 2 — Đưa cho người thân tin cậy nhất, kèm hướng dẫn ngắn cách sử dụng nếu bạn gặp chuyện. Share 3 — Lưu ở một địa điểm thứ ba (văn phòng luật sư, hoặc location địa lý khác). Không ai trong số này biết các share khác ở đâu. Test recovery ít nhất mỗi năm để đảm bảo shares vẫn đọc được và bạn còn nhớ quy trình.

Câu Hỏi Thường Gặp — Shamir Secret Sharing

Đây là điểm quan trọng nhất: SSS cần reconstruct secret đầy đủ tại một máy để sử dụng — tạo ra điểm tấn công tạm thời. MPC (TSS) ký giao dịch mà không bao giờ reconstruct key — signing xảy ra phân tán qua nhiều round communication. SSS phù hợp cho backup và recovery dài hạn nơi bạn trust một máy thực hiện reconstruction (ví dụ air-gapped machine). MPC phù hợp cho operational signing thường xuyên khi không muốn key tồn tại đầy đủ ở bất kỳ đâu.
BIP-39 tạo một mnemonic phrase (12/24 từ) duy nhất đại diện cho toàn bộ wallet — một single point of failure. SLIP-39 (Shamir Backup của SatoshiLabs) dùng SSS để chia master secret thành nhiều mnemonic shares — bạn có thể cấu hình 2-of-3 hay 3-of-5. Để restore wallet, nhập đủ threshold shares vào Trezor. SLIP-39 còn hỗ trợ group threshold phức tạp hơn: cần 2 nhóm, trong đó nhóm A cần 2-of-3 shares và nhóm B cần 1-of-2 shares. Ledger không hỗ trợ SLIP-39 natively.
Không — đây là tính chất information-theoretic của SSS. Với K−1 shares (dưới threshold), kẻ tấn công không thu được bất kỳ thông tin gì về secret. Polynomial bậc K−1 có vô số nghiệm có thể pass qua K−1 điểm đã biết — f(0) có thể là bất kỳ giá trị nào với xác suất bằng nhau. Đây là bảo mật mạnh hơn AES hay RSA vốn là computational security — SSS là information-theoretic security, không thể phá dù có máy tính lượng tử.
Có, nhưng cần tool phù hợp. MetaMask dùng BIP-39 seed phrase. Bạn có thể dùng tool offline như iancoleman.io/bip39 để lấy entropy gốc (128 hoặc 256 bit), sau đó dùng SLIP-39 compatible tool hoặc Trezor Suite để chia entropy đó thành SSS shares theo SLIP-39. Trezor Model T hỗ trợ SLIP-39 native. Ledger KHÔNG hỗ trợ SLIP-39 — nếu restore từ SLIP-39 shares, cần reconstruct entropy trước rồi nhập dạng BIP-39. Luôn thực hiện toàn bộ quá trình này trên máy air-gapped, không kết nối internet.

Tài liệu tham khảo

Paper gốc, chuẩn kỹ thuật và documentation thực tế về SSS và SLIP-39.

  1. Shamir, A. How to Share a Secret. Communications of the ACM, 22(11), 612–613. 1979. — Paper gốc định nghĩa SSS — 4 trang, đọc được trong 15 phút.
  2. Blakley, G.R. Safeguarding Cryptographic Keys. AFIPS 1979. — Phương pháp hyperplane độc lập, song song với Shamir.
  3. SatoshiLabs. SLIP-39: Shamir's Secret-Sharing for Mnemonic Codes. github.com/satoshilabs/slips/slip-0039. — Specification đầy đủ SLIP-39.
  4. SatoshiLabs. python-shamir-mnemonic — SLIP-39 Reference Implementation. github.com/trezor/python-shamir-mnemonic. — Reference implementation Python.
  5. Beimel, A. Secret-Sharing Schemes: A Survey. LNCS 2011. cs.bgu.ac.il/~beimel/Papers/Survey.pdf. — Survey toàn diện về secret sharing schemes.
  6. Gennaro, R. & Goldfeder, S. Fast Multiparty Threshold ECDSA. ACM CCS 2018. eprint.iacr.org/2019/114. — TSS — giải pháp không cần reconstruct key, khắc phục điểm yếu của SSS.
  7. ZRO Research. MPC Wallet Là Gì? — TWT.VN. twt.vn/mpc-wallet-la-gi/. — Bài giải thích MPC, nâng cấp của SSS.
  8. ZRO Research. Wallet Infrastructure & Key Management — TWT.VN. twt.vn/. — Pillar page toàn bộ cluster.
₿ TWT.VN · Knowledge Base

Khám Phá Thêm — Wallet Infrastructure

Mỗi bài đi sâu vào một chủ đề kỹ thuật — cùng nhau tạo thành bộ tài liệu Wallet Infrastructure đầy đủ nhất tiếng Việt.