Pular para o conteúdo
ecdsa.com

Compartilhamento de segredo de Shamir

O esquema de Adi Shamir (1979) que divide um segredo em n partes com um polinômio aleatório: quaisquer k delas o reconstroem e k − 1 não revelam nada.
Também escrito comoShamir's secret sharingSSSsecret splittingm-of-n

O segredo é o termo constante de um polinômio aleatório de grau k − 1 sobre um corpo finito; cada parte é o polinômio avaliado em um ponto distinto e diferente de zero, e a interpolação de Lagrange sobre quaisquer k partes recupera a constante. As implementações costumam trabalhar byte a byte em GF(2⁸), de modo que cada parte tem o comprimento do segredo mais um índice. A segurança é incondicional, no sentido da teoria da informação: menos de k partes não dão nenhuma informação, qualquer que seja o poder computacional.

O Shamir puro não garante integridade: uma parte corrompida ou maliciosa reconstrói, sem aviso, um segredo errado; por isso, os esquemas práticos acrescentam um checksum ou digest do segredo, ou usam compartilhamento de segredo verificável (Feldman, Pedersen). Ele também exige um momento em que o segredo inteiro existe em um só lugar, na divisão e na reconstrução; as assinaturas de limiar evitam isso porque nunca reconstroem a chave.

Os usos incluem cerimônias de chaves de HSMs e de CAs (cartões de operador m de n), backups de chaves raiz e de recuperação, backups de carteiras SLIP-39 e as chaves de desbloqueio (unseal keys) do HashiCorp Vault. A ferramenta de compartilhamento de segredo de Shamir divide e combina segredos localmente, no navegador.

Padrões e referências

Todos os termos