Roda 100% no seu navegador via Web Crypto — o segredo e suas partes nunca saem do seu dispositivo.
Write a Python implementation of Shamir's Secret Sharing over GF(256) that interoperates with these share strings: each share is the two-digit hex x-coordinate, a dash, then one hex byte per secret byte (e.g. "01-a3b2c1"). It must split a secret into 5 shares with threshold 3, and reconstruct from any 3 of them. Use the AES reduction polynomial 0x11B and rejection-free crypto-random coefficients.
O que faz
O compartilhamento de segredo de Shamir divide um segredo em N partes, de modo que quaisquer K delas o reconstruem - e menos de K não revelam absolutamente nada, nem mesmo uma pista parcial. É a base matemática para dividir a frase-semente de uma carteira de criptomoedas, uma senha mestra ou uma chave de criptografia entre várias pessoas ou locais, de forma que nenhum detentor isolado (e nenhuma coalizão menor que K) consiga agir sozinho. Usos reais incluem custódia de criptomoedas (backup de carteira multiparte), depósito de chaves (key escrow), códigos de lançamento nuclear, planejamento sucessório (advogado + cônjuge + cofre bancário) e envelopes de recuperação de desastres.
A ferramenta executa todo o esquema no seu navegador sobre GF(256) - o mesmo corpo de Galois que o AES usa - com coeficientes polinomiais vindos da Web Crypto. Nada do que você digita, e nenhuma parte que você cola, sai do seu dispositivo.
Como usar
- Escolha um modo com o alternador Split / Reconstruct no topo.
- Split: digite o segredo, defina Total shares (N) (2-255) e Threshold (K) (2-N, o mínimo necessário para recuperar), depois pressione Split secret.
- Copie cada parte numerada para o detentor dela (cada parte tem seu próprio botão Copy; Copy all shares pega todas). A nota do escudo lembra a você: quaisquer K das N partes recuperam o segredo; K-1 não revelam nada.
- Reconstruct: cole uma parte por campo (Add share para mais), depois pressione Reconstruct secret. O segredo recuperado aparece na saída verde com um botão de copiar; partes inválidas ou incompatíveis produzem um erro claro.
Exemplos
Dividir uma frase-semente em 3-de-5
Segredo: river vacuum lamp fiber quiz noise border mind smile crouch tuna - com N=5, K=3 você obtém cinco partes, cada uma como:
01-9f3ac27e1b84d05c…
02-4b19e7a2c83f5d16…
03-c7e02f9a45b6138d…
04-2ad673f1e09b85c4…
05-85d31c6b7a49f0e2…
(Seus valores serão diferentes - os coeficientes do polinômio são aleatórios de novo a cada divisão, então duas divisões do mesmo segredo nunca se parecem.)
Recuperar com quaisquer 3 das 5
Cole as partes 01-…, 03-…, 05-… em três campos e pressione Reconstruct secret - a frase-semente original volta exatamente igual. Partes 1+2, 2+4+5, qualquer combinação de três funciona; duas partes sozinhas reconstroem apenas lixo.
Um pareamento errado falha ruidosamente
Misturar partes de duas divisões diferentes (ou duas partes afirmando a mesma posição) devolve Two different shares both claim x=01 - they cannot come from the same split, em vez de devolver silenciosamente um segredo errado.
Bom saber
- Por que K-1 partes não revelam nada: cada byte do segredo torna-se o termo constante de um polinômio aleatório de grau (K-1). K-1 pontos são consistentes com todos os termos constantes possíveis - o segredo está oculto em sentido teórico-da-informação, não apenas computacionalmente difícil. Isso vale até contra poder de computação ilimitado.
- A matemática em uma linha: as partes são avaliações do polinômio f(1)…f(N) sobre GF(256); a reconstrução é a interpolação de Lagrange em x=0. A adição é XOR, a multiplicação usa o polinômio de redução do AES (0x11B).
- Aleatoriedade nova a cada divisão: dividir o mesmo segredo duas vezes gera partes completamente diferentes; os dois conjuntos o reconstroem de forma independente.
- Trate as partes como chaves: uma parte é metade (ou um terço, ou um quinto) do seu segredo. Guarde-as em locais separados - se um atacante coletar K delas, ele possui o segredo.
- Privado: roda 100% no cliente; o link de compartilhamento carrega apenas suas configurações N/K, nunca o segredo.
- Ferramentas relacionadas: Password Strength Analyser, Secure Token Generator, HMAC Generator.