147 / 691SSS

Shamir Secret Sharing

Compartilhamento de segredo com limiar de Shamir

Shamir Secret Sharing divide um segredo em partes: um limiar escolhido o recupera; menos partes não alteram o conhecimento do segredo no modelo ideal.

Shamir Secret Sharing é uma construção publicada por Adi Shamir em 1979. Codifica o segredo como constante de um polinômio aleatório sobre um corpo finito; não recorta uma frase nem é, por si só, um protocolo de assinatura.

Um esquema k de n recupera com quaisquer k partes válidas e distintas do mesmo conjunto. Tolera perder n−k partes, mas também permite que k titulares cooperantes obtenham o segredo. Por exemplo, 3 de 5 tolera duas perdas, não três. O limiar equilibra disponibilidade e tamanho do grupo capaz de recuperar. [Adi Shamir — How to Share a Secret (1979)]

Para o segredo S escolhe-se f(x)=S+a1*x+…+a(k−1)*x^(k−1). Os demais coeficientes são elementos independentes e uniformemente aleatórios do corpo. Uma parte é (x,f(x)) com x distinto e não nulo; x=0 revelaria S diretamente. A interpolação de Lagrange de k pontos determina f(0). Duas cópias do mesmo ponto não acrescentam equação. [Adi Shamir — How to Share a Secret (1979)]

Somente para ensino, tomemos S=5 e f(x)=5+3*x mod 17. As partes são (1,8), (2,11), (3,14). As duas primeiras dão inclinação 3 e constante 8−3=5; os três pares recuperam 5. O ponto (1,8) combina com qualquer S de 0 a 16 se a=8−S mod 17. Esse corpo pequeno não é um projeto de carteira. [Adi Shamir — How to Share a Secret (1979)]

No esquema ideal, menos de k partes completas não fornecem informação sobre S, mesmo com computação ilimitada. Isso pressupõe coeficientes independentes corretos e o modelo de observação definido. Aleatoriedade fraca, coeficientes reutilizados, canais laterais ou dados extras de verificação exigem análise separada. Compartilhar não fortalece um segredo fraco adivinhável por outros meios. [Adi Shamir — How to Share a Secret (1979)] [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes]

Recuperar requer o mesmo corpo, codificação, índices e identidade do conjunto. Um corpo primo GF(p) usa inversos modulares, não divisão decimal; GF(256) tem operações diferentes dos restos módulo 256. SLIP-39 acrescenta lista, metadados, grupos, criptografia e verificações específicos. Dois programas chamados Shamir não precisam ter partes compatíveis. [Adi Shamir — How to Share a Secret (1979)] [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes]

A interpolação básica não autentica origem da parte nem honestidade do distribuidor. Um ponto danificado pode retornar outro segredo em vez de apenas indicar insuficiência. Detecção, correção de erros e verifiable secret sharing são construções adicionais com premissas próprias. SLIP-39 acrescenta checksum e digest; esses recursos não pertencem automaticamente a todo Shamir Secret Sharing. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes] [NIST — Multi-Party Threshold Cryptography]

A recuperação comum expõe S completo num ambiente que pode vazá-lo. Ao contrário de Multisig, Shamir Secret Sharing não estabelece várias chaves independentes de assinatura on-chain. Assinaturas de limiar podem usar protocolo MPC adicional para operar nas partes sem montar a chave, como distingue o NIST. Dividir e depois combinar não oferece essa propriedade. [NIST — Multi-Party Threshold Cryptography]

Cinco arquivos numa conta não separam riscos de perda ou comprometimento. Registre parâmetros e teste recuperação num dispositivo confiável. Um novo polinômio aleatório com o mesmo S cria outro conjunto que não deve ser misturado ao antigo. Um conjunto antigo suficiente ainda recupera S; repartir novamente não invalida partes já obtidas nem um segredo vazado. [Adi Shamir — How to Share a Secret (1979)] [Trezor — Multi-share Backup]

Para ter uma visão mais completa, leia este verbete junto com SLIP-39, Multisig, Seed Phrase, Chave privada, Bitcoin Inheritance Plan. Também há referências a este verbete em SLIP-39, FROST.

DOC · 001Adi Shamir — How to Share a Secret (1979)Fonte primária ↗DOC · 002SLIP-0039 — Shamir Secret-Sharing for Mnemonic CodesEspecificação ↗DOC · 003NIST — Multi-Party Threshold CryptographyFonte primária ↗DOC · 004Trezor — Multi-share BackupDocumentação ↗
Fontes em primeiro lugar · Não é recomendação de investimento