Partilha de segredo de Shamir
Divide uma palavra-passe ou frase de recuperação em N partes, de modo que quaisquer M a reconstroem, com o esquema de Shamir em GF(256), no navegador.
A divisão e a recombinação correm inteiramente no teu navegador. O segredo e as partes nunca são enviados para lado nenhum; os números aleatórios vêm de crypto.getRandomValues.
Dividir um segredo
Combinar partes
Como dividir um segredo
- Escreve ou cola o texto a proteger em Segredo (texto): uma frase de recuperação, uma palavra-passe mestra, uma chave de encriptação…
- Define o Número de partes (N) e as Partes necessárias para reconstruir (M). Por exemplo, N = 5 e M = 3 significa que quaisquer 3 das 5 partes reconstroem o segredo, e que 2 partes não revelam nada.
- Clica em Dividir segredo. Cada parte aparece numa linha própria com um botão Copiar; também podes usar Copiar todas as partes ou Transferir partes (.txt).
- Clica em Teste: combinar as primeiras M partes para confirmares que as partes funcionam antes de as distribuíres.
- Entrega cada parte a uma pessoa diferente ou guarda-a num local diferente. Não as guardes todas juntas, ou a divisão perde o sentido.
Como reconstruir o segredo
- Cola pelo menos M partes em Partes, uma por linha, por qualquer ordem. As linhas em branco são ignoradas.
- Clica em Combinar partes. O texto aparece em Segredo recuperado e a mensagem de estado indica que números de parte foram usados.
- Se uma parte tiver um erro de cópia, vier de outra divisão ou aparecer duas vezes com conteúdo diferente, a ferramenta diz qual é e porquê, em vez de devolver lixo.
Como funciona a partilha de segredo de Shamir
Adi Shamir publicou o esquema em 1979. Para partilhar um byte s com limiar M, escolhe-se um polinómio aleatório de grau M − 1 cujo termo constante é s: f(x) = s + a₁x + … + a₍M−1₎x^(M−1). A parte número x é o valor f(x). Quaisquer M pontos determinam o polinómio, por isso a interpolação de Lagrange em x = 0 devolve s; com menos de M pontos, todos os valores de s são igualmente prováveis, e as partes não revelam nada sobre o segredo.
Esta ferramenta trabalha no corpo finito GF(256) (o mesmo usado pelo AES, com o polinómio de redução x⁸ + x⁴ + x³ + x + 1), por isso cada byte do segredo em UTF-8 tem o seu próprio polinómio e as partes têm exatamente o mesmo comprimento que o segredo. Os coeficientes aleatórios vêm de crypto.getRandomValues, o gerador aleatório criptográfico do navegador. Tudo corre localmente: o segredo e as partes nunca saem do teu dispositivo.
Formato das partes
Uma parte tem este aspeto: 3-2-5f1c…. Primeiro vem o limiar M, depois o número da parte X (1 a 255) e por fim os dados em hexadecimal. Os dados contêm os valores do polinómio para o segredo seguidos de um CRC-32 de 4 bytes do segredo, e terminam com uma soma de verificação CRC-32 de 4 bytes da própria parte. A soma de verificação deteta erros de cópia; o CRC interno mostra quando foram misturadas partes de segredos diferentes. As partes criadas por outras ferramentas Shamir usam outros formatos e não podem ser combinadas aqui.
Perguntas frequentes
Como devo escolher N e M?
M é o número de pessoas ou locais que têm de colaborar; N − M é o número de partes que te podes dar ao luxo de perder. 3 de 5 é uma escolha comum: duas partes podem perder-se ou ser destruídas, e nenhum par de detentores consegue reconstruir o segredo sozinho.
É seguro guardar uma parte na cloud?
Uma única parte, ou qualquer grupo com menos de M partes, não revela nada sobre o segredo. Mesmo assim, guarda menos de M partes em cada conta ou local, caso contrário esse local tem sozinho o segredo.
Esta ferramenta encripta o segredo?
Não no sentido habitual: não há palavra-passe. A proteção vem do limiar. Podes combinar as duas coisas, por exemplo dividindo a frase-passe de um ficheiro encriptado.
O que acontece se der mais de M partes?
As primeiras M partes reconstroem o segredo e as restantes são comparadas com elas. Uma parte que não encaixa é assinalada, o que ajuda a detetar uma parte danificada ou estranha.
Posso dividir um ficheiro?
Esta ferramenta divide texto até 10 000 bytes. Para um ficheiro, encripta-o com uma frase-passe aleatória forte e divide antes a frase-passe.
Ferramentas relacionadas
- Gerador de palavras-passe Gerador de palavras-passe grátis que cria palavras-passe aleatórias fortes de 4 a 128 caracteres no teu navegador. Nada é guardado nem enviado.
- Gerador de frases-passe Cria frases-passe fortes e fáceis de memorizar a partir da lista EFF ou de uma lista francesa, com a entropia em bits. Geradas com segurança no navegador.
- Encriptar texto com palavra-passe Encripta e desencripta texto com uma frase-passe no navegador, com AES-256-GCM e PBKDF2 de 600 000 iterações. Nada é enviado. Limites explicados.
- Gerador de códigos TOTP e HOTP Gera códigos 2FA TOTP e HOTP a partir de um segredo Base32 ou de um URI otpauth://, com SHA-1, SHA-256 ou SHA-512, contagem decrescente e código QR.