Ferramentas para desenvolvedores · SHA calculadora de hash
De SHA-0 a SHA-3: como o padrão de hash seguro de NIST evoluiu
· Fundo
sha-256 criptografia APIs do navegador
SHA-1, SHA-2 e SHA-3 são três gerações com origens diferentes. Esta postagem rastreia o padrão Secure Hash desde o SHA-0 retirado até a competição Keccak e explica por que SHA-2 ainda domina.
O que significam os números? - por que SHA-256 é SHA-2 mas SHA-3 é algo totalmente diferente
Os desenvolvedores veem SHA-1, SHA-256 e SHA-3 e assumem que são uma progressão linear. Eles não são. Os números significam coisas diferentes em contextos diferentes, e a compreensão da história da família explica por que SHA-256 é a escolha sensata para novas aplicações, por que SHA-1 é apenas legado, apesar de ser amplamente implantado, e por que SHA-3 é um design separado e não uma evolução.
Quando NIST publicou pela primeira vez uma função hash segura, eles a chamaram de SHA e mais tarde de SHA-0, uma versão de vida tão curta que a maioria dos desenvolvedores nunca ouviu falar dela. O SHA-0 foi retirado dentro de alguns anos devido a uma falha não especificada que nunca foi divulgada publicamente. Essa retirada aconteceu silenciosamente e os algoritmos que se seguiram deram origem à confusão de nomenclatura. Após a retirada de SHA-0, NIST publicou SHA-1, que se tornou o padrão por vinte anos.
A ferramenta abrange SHA-1 e SHA-2; o histórico detalhado de SHA-0 está fora da evidência do repositório
SHA-1 é uma função hash de 160 bits que produz uma saída hexadecimal de 40 caracteres. É baseado na construção Merkle-Damgård, onde uma função de compressão processa a entrada bloco por bloco, encadeando o estado adiante. O projeto era sólido quando publicado e não houve ataques práticos por muitos anos. No entanto, o ano 2005 trouxe um avanço criptoanalítico. Uma equipe liderada por Xiaoyun Wang publicou um ataque de colisão em SHA-1, mostrando que encontrar duas mensagens diferentes com o mesmo hash era viável usando técnicas muito mais eficientes do que a abordagem de força bruta.
Anos depois, em 2017, uma equipe chamada SHAttered demonstrou a primeira colisão prática, usando um cluster de GPUs para encontrar dois arquivos PDF diferentes com o mesmo hash SHA-1. Em 2020, um artigo de acompanhamento mostrou que as colisões de prefixo escolhido – a variante mais perigosa – eram acessíveis. SHA-1 não era mais simplesmente fraco; estava quebrado. A resposta à quebra de SHA-1 foi introduzir SHA-2, uma família de quatro funções: SHA-224, SHA-256, SHA-384 e SHA-512.
SHA-2 - a família do início dos anos 2000 (224, 256, 384, 512 e mais tarde os truncados 512/224 e 512/256) construídos na mesma construção
Esses quatro operam em tamanhos de estado e tamanhos de bloco diferentes, mas usam a mesma construção fundamental de SHA-1. A família SHA-2 foi publicada em 2001, anos antes das grandes rupturas em SHA-1, mas não foi amplamente adotada até que os colapsos de SHA-1 se tornaram concretos. SHA-256 produz um hash de 256 bits e agora é a escolha padrão para novos aplicativos. SHA-512 produz um hash de 512 bits e geralmente é mais rápido em processadores de 64 bits porque opera em palavras de 64 bits em vez de palavras de 32 bits.
A convenção de nomenclatura para SHA-2 é a fonte da confusão. As funções são chamadas SHA-256, SHA-384 e SHA-512 e todas fazem parte da família SHA-2. Quando alguém diz SHA-2, está se referindo à filosofia de design e à construção de Merkle-Damgård, não a um único algoritmo. Os números nos nomes são as larguras de saída em bits, não um esquema de versão. SHA-256 não é uma atualização de SHA-1; é um design contemporâneo que utiliza a mesma estrutura, mas com melhores propriedades de segurança.
Os documentos do repositório demonstraram colisões SHA-1 sem reconstruir a história teórica sem fontes
Dentro da construção Merkle – Damgård que SHA-1 e SHA-2 usam, uma função de compressão processa a entrada bloco por bloco. O estado é transportado de um bloco para o próximo e o estado final é gerado como resumo. A função de compactação SHA-256 usa operações de 32 bits e estado de 256 bits, portanto, processa blocos de 512 bits. A função de compactação SHA-512 usa operações de 64 bits e estado de 512 bits, portanto, processa blocos de 1024 bits. Essas escolhas afetam o desempenho e a largura de banda - SHA-512 geralmente é mais rápido porque a aritmética de 64 bits é nativa em hardware moderno.
A decisão entre SHA-256 e SHA-512 para um novo sistema geralmente é baseada em testes de desempenho e restrições de espaço, e não em segurança, porque ambos ainda são seguros no início de 2020. A calculadora de hash ToolAcre SHA fornece SHA-256, SHA-384 e SHA-512, e quando os leitores comparam os resumos lado a lado, eles veem a diferença de quatro caracteres entre SHA-256 (64 caracteres hexadecimais) e SHA-512 (128 caracteres hexadecimais).
SHA-3 está fora do API compatível; o histórico da competição não é afirmado a partir de evidências do repositório
As motivações para substituir SHA-1 ficaram claras no início dos anos 2000, então NIST iniciou o processo de seleção de SHA-3. Em vez de projetar um substituto isoladamente, NIST abriu a competição para a comunidade de pesquisa criptográfica. O objetivo era selecionar uma função hash que fosse fundamentalmente diferente da construção Merkle-Damgård, para ganhar confiança em uma diversidade de designs. Várias equipes enviaram propostas e, ao longo de vários anos, a competição selecionou Keccak como vencedor. Keccak era uma construção de esponja, uma forma diferente de construir uma função hash que não havia sido usada antes em um padrão.
SHA-3 é a padronização NIST do Keccak, finalizada em 2015. Ao contrário de SHA-2, que é uma família de algoritmos, SHA-3 é geralmente referido como um algoritmo único, embora também tenha múltiplas larguras. SHA-3 ainda não está amplamente implantado, o que é surpreendente considerando que é padrão há quase uma década. A razão é que SHA-2 não está quebrado. Não há nenhum motivo de segurança urgente para atualizar de SHA-2 para SHA-3. O Web Crypto API do navegador implementa SHA-1 e SHA-2, mas não SHA-3, e é por isso que a calculadora de hash ToolAcre SHA não oferece SHA-3.
SHA-2 continua sendo o padrão da ferramenta; este artigo evita uma afirmação de segurança universal sem suporte
Por que SHA-2 ainda está em toda parte é a questão central da escolha do algoritmo hash. SHA-2 não tem colisões práticas conhecidas. As implementações de hardware estão maduras. Cada linguagem de programação e plataforma oferece suporte a isso. Alterar o algoritmo de hash de um sistema é prejudicial: cada hash armazenado deve ser migrado ou retido para verificação, cada ponto de integração deve ser atualizado e testes devem ser realizados para garantir que o novo algoritmo funcione com todos os sistemas downstream.
Para sistemas onde SHA-2 ainda é seguro, esta interrupção não se justifica. Para novos sistemas e novos protocolos, SHA-2 é o padrão sensato. A calculadora de hash ToolAcre SHA mostra SHA-256 e SHA-512 em uma posição de destaque porque são o que novos aplicativos devem usar. SHA-1 está listado apenas como legado. SHA-384 é mostrado para fins de integridade e para os casos de uso em que é especificamente necessário.
O que isso não cobre – os internos do Keccak, que merecem seu próprio posto
O futuro dos padrões de hash não está claro neste momento. SHA-3 é seguro e maduro e fornece uma alternativa se SHA-2 for quebrado. A computação quântica representa uma ameaça de longo prazo para todas as funções hash atuais, mas os projetos de funções hash resistentes ao quantum são uma área de pesquisa aberta. NIST tem uma competição de criptografia pós-quântica em andamento, selecionando algoritmos que se destinam a resistir a ataques quânticos, mas as funções hash não são uma prioridade nessa competição em comparação com sistemas de chave pública.
Para aplicações práticas na década de 2020, SHA-256 é a resposta à pergunta "qual hash devo usar?" Para verificação de integridade, endereçamento de conteúdo e impressão digital, SHA-256 é o padrão. Para sistemas que precisam de um resumo mais amplo, SHA-512 geralmente é mais rápido em hardware de 64 bits. SHA-384 é mais comum nas especificações do conjunto de criptografia TLS. SHA-1 é apenas para verificação de legado. A calculadora de hash ToolAcre SHA fornece todos os quatro algoritmos Web Crypto para que os desenvolvedores possam ver seus resultados.
Conclusão: três gerações, um nome de família — a calculadora de hash ToolAcre SHA cobre os algoritmos SHA-1 e SHA-2 que o navegador fornece
Compreender a história do SHA esclarece por que os números e nomes significam o que significam e por que as escolhas feitas nas décadas de 1990 e 2000 ainda determinam o que os novos aplicativos fazem hoje. SHA-0 foi retirado silenciosamente, SHA-1 foi quebrado por ataques práticos, SHA-2 ainda é seguro e SHA-3 é um design alternativo escolhido para robustez futura. O novo código deve usar SHA-256 para hash de uso geral. Os sistemas legados ainda usam SHA-1, e a interoperabilidade com esses sistemas requer a capacidade de calcular hashes SHA-1.
A calculadora de hash ToolAcre SHA incorpora esta perspectiva: ela oferece SHA-256 como padrão, SHA-512 como uma opção mais ampla, SHA-384 para requisitos específicos e SHA-1 rotulado como legado. Isso fornece aos desenvolvedores ferramentas precisas e rotulagem precisa. A implementação do Web Crypto do navegador fornece esses algoritmos e ToolAcre usa essa implementação diretamente em vez de enviar código personalizado. A escolha reflete décadas de evolução criptográfica e o estado atual da prática.