Português (Brasil)

Ferramentas para desenvolvedores · SHA calculadora de hash

Por que a criptografia da Web oferece SHA-1 para SHA-512, mas não MD5 ou SHA-3

· Como funciona

criptografia APIs do navegador sha-256 javascript

Quatro caixas de algoritmo rotuladas de SHA-1 a SHA-512 com marcas de seleção e caixas ausentes correspondentes para MD5 e SHA-3
Ilustração vetorial original ToolAcre

O resumo API do navegador suporta exatamente quatro algoritmos. Esta postagem explica por que MD5 foi deixado de fora, por que SHA-3 não foi adicionado e o que isso significa para uma ferramenta que se recusa a enviar o que a plataforma não fornece.

Onde está MD5? — a primeira pergunta de qualquer pessoa que esteja migrando um fluxo de trabalho legado de checksum

O Web Crypto API do navegador envia exatamente quatro algoritmos de resumo: SHA-1, SHA-256, SHA-384 e SHA-512. Se você pegar a calculadora de hash ToolAcre SHA esperando MD5 ou SHA-3, você não os encontrará. Essa especificidade não é uma limitação da ferramenta; reflete uma escolha deliberada de plataforma. Entender por que essas quatro alternativas foram incluídas e por que duas alternativas populares foram deixadas de fora diz muito sobre como as APIs do navegador são projetadas.

Todos os principais navegadores expõem crypto.subtle.digest em origens seguras. Quando seu JavaScript chama esse método, ele passa para a implementação criptográfica da plataforma – código nativo em execução com sandbox de segurança e otimização de desempenho. Os algoritmos de resumo oferecidos foram escolhidos pelo W3C Web Crypto Working Group com prioridades específicas: compatibilidade com os padrões de segurança existentes, suporte disponível em bibliotecas criptográficas, maturidade e as necessidades práticas de segurança da plataforma web.

Os quatro algoritmos SubtleCrypto.digest suportam — SHA-1, SHA-256, SHA-384 e SHA-512, e nada mais

ToolAcre aceita os mesmos quatro identificadores aplicados por digestBytes: SHA-1, SHA-256, SHA-384 e SHA-512. Um nome não reconhecido é rejeitado antes que o Web Crypto seja chamado, e o conjunto de testes passa especificamente em MD5 para confirmar essa rejeição. O selecionador, portanto, descreve um limite de produto testado em vez de uma pesquisa de cada resumo já padronizado.

SHA-1 que aparece nessa lista não faz todas as quatro recomendações equivalentes. Seu objeto de resultado carrega um sinalizador quebrado e a interface repete um aviso legado; as outras três são as opções SHA-2 disponíveis. A disponibilidade e a adequação devem permanecer separadas sempre que uma ferramenta de compatibilidade reproduz um valor antigo sem encorajar uma nova dependência dele.

MD5 está ausente nesta implementação e no Web Crypto; este artigo não adiciona uma justificativa de padrões sem fontes

MD5 é uma função hash criptográfica que produz um resumo de 128 bits, tornando-o mais curto e computacionalmente mais barato que SHA-256. Durante décadas foi a escolha padrão para somas de verificação e assinaturas digitais. No entanto, a resistência à colisão de MD5 está fundamentalmente quebrada. Em 2004, os criptógrafos demonstraram colisões práticas – duas entradas diferentes com o mesmo resumo – e o algoritmo foi completamente desmantelado por trabalhos acadêmicos. A vulnerabilidade matemática é absoluta e permanente.

A especificação W3C Web Crypto fez uma escolha deliberada de não incluir MD5. O raciocínio é simples: enviar um algoritmo quebrado para milhões de usuários de navegadores normalizaria seu uso em novos aplicativos, mesmo que ele só deva aparecer em cenários de compatibilidade legados. Se um aplicativo realmente requer MD5 para interoperabilidade com sistemas antigos, esse código pertence a um tempo de execução do lado do servidor onde o requisito é compreendido e auditado, não no navegador. Tornar um algoritmo quebrado convenientemente acessível criaria expectativas de segurança em novos sistemas.

A calculadora de hash ToolAcre SHA também não fornece uma implementação MD5. Assim como a plataforma API que usa, ela se recusa a tornar um algoritmo quebrado convenientemente acessível. Se o seu aplicativo requer absolutamente MD5 - raro fora dos sistemas Git legados - a implementação pertence à sua própria base de código com uma observação clara de que é um calço de compatibilidade. A acessibilidade cria expectativas, e algoritmos quebrados não merecem expectativas.

SHA-3 está fora do navegador API e da ferramenta; seu histórico de adoção está fora da evidência do repositório

SHA-3 foi padronizado por NIST em 2015 após uma longa competição pública e é criptograficamente sólido. Ele usa uma construção fundamentalmente diferente de SHA-2, chamada esponja, que oferece propriedades teóricas interessantes e compensações de desempenho dependendo do seu hardware. Em sistemas modernos, SHA-3 pode ser mais rápido que SHA-256. No entanto, a plataforma do navegador não o expõe hoje, e este atraso reflete decisões práticas sobre a maturidade da plataforma e o ritmo de adoção.

O atraso no envio SHA-3 reflete a realidade: Web Crypto foi projetado para cobrir algoritmos de uso mais amplo na web e em HTTPS/TLS. Na finalização de API, SHA-2 (256, 384, 512) foi o consenso esmagador para novos sistemas, e a mudança para SHA-3 está acontecendo muito mais lentamente do que a mudança de MD5 ou SHA-1. A maioria dos aplicativos ainda não precisa de SHA-3. O custo de expansão do API e de testá-lo em todos os navegadores e plataformas não foi justificado pela demanda no lançamento.

Esta não é uma rejeição permanente. A Web Crypto API pode evoluir. Se a adoção de SHA-3 acelerar, o grupo de trabalho poderá adicioná-lo. O conjunto atual representa os algoritmos maduros e amplamente padronizados que o Web Crypto precisa para atender às necessidades imediatas de segurança da plataforma. As APIs do navegador devem ser estáveis ​​e mantidas cuidadosamente; apressar-se para adicionar recursos antes da necessidade generalizada cria carga de manutenção e risco de compatibilidade nos próximos anos.

Por que SHA-1 ainda existe — necessidades de verificação legadas e a diferença entre oferecer e recomendar

SHA-1 está incluído no Web Crypto apesar de estar criptograficamente quebrado. Essa escolha contraintuitiva muitas vezes surpreende os desenvolvedores. O algoritmo produz um resumo de 160 bits, e ataques de colisão contra SHA-1 agora são práticos – dois documentos diferentes podem ser criados para comcomcompartilhar o mesmo resumo. As colisões de prefixo escolhido permitem que os invasores criem dois documentos que sejam significativos durante a colisão, o que quebra assinaturas e certificados. No entanto, permanece na plataforma.

SHA-1 permanece no Web Crypto por um motivo necessário: compatibilidade herdada. Os identificadores de objeto Git são baseados em SHA-1 e, enquanto o projeto Git está em transição para SHA-256, milhões de repositórios, referências e sistemas de construção existentes ainda emitem hashes SHA-1. As impressões digitais do certificado TLS de sistemas mais antigos carregam resumos SHA-1. APIs que emitiram assinaturas HMAC-SHA1 anos atrás ainda precisam de validação. Esses sistemas implantados devem ser verificados ou migrados. A plataforma inclui SHA-1 para tornar possível esse trabalho necessário.

A plataforma API inclui SHA-1 com claro entendimento de que existe para compatibilidade, não para recomendação. A IU do navegador rotula SHA-1 com um aviso. A calculadora de hash ToolAcre SHA exibe "Criptograficamente quebrada" ao lado do resultado SHA-1, garantindo que qualquer pessoa que a utilize entenda que está trabalhando com material legado. A transparência é essencial; os usuários nunca devem confundir compatibilidade SHA-1 com endosso SHA-1.

Se a compatibilidade exigir MD5, use uma implementação revisada fora desta ferramenta e nunca confunda compatibilidade com segurança

Os quatro algoritmos do Web Crypto estão alinhados ao ecossistema do conjunto de criptografia TLS e aos padrões de segurança mais importantes. SHA-256 é o padrão atual para hashing de uso geral, usado em verificações de integridade de sub-recursos, endereçamento de conteúdo e novos sistemas de segurança. SHA-512 é mais rápido em hardware de 64 bits e oferece um resumo mais amplo. SHA-384 é conhecido principalmente por seu uso em conjuntos de criptografia TLS.

SHA-1 é mantido para interoperabilidade, não porque alguém deva iniciar um novo sistema com ele. Se você estiver verificando uma soma de verificação SHA-1 existente, correspondendo a uma impressão digital de certificado antigo ou reproduzindo um ID de commit do Git, SHA-1 em ToolAcre permite fazer isso. Se você estiver projetando um novo sistema, SHA-256 é a escolha óbvia. O algoritmo escolhido sinaliza sua compreensão do modelo de segurança.

O que isso não cobre – tempos de execução do lado do servidor, que geralmente expõem muito mais algoritmos de resumo

Se sua aplicação realmente precisa de MD5, SHA-3 ou qualquer outro algoritmo, a escolha é clara: manter esse código no tempo de execução do lado do servidor e expor apenas o resultado final ao navegador. Não envie sua própria implementação JavaScript de um algoritmo criptográfico para uso no navegador. O Web Crypto nativo do navegador é mais rápido, seguro e auditado de uma forma que uma função JavaScript escrita à mão não consegue igualar. Delegar para a plataforma é sempre a escolha correta quando a plataforma oferece o que você precisa.

Isto se aplica até mesmo a algoritmos "simples". Uma implementação MD5 escrita por você mesmo pode parecer inofensiva porque MD5 está quebrada de qualquer maneira, mas algoritmos quebrados não têm gradações – eles estão apenas quebrados. O envio normaliza a prática de implementação de criptografia no código do aplicativo. O navegador fornece o que a plataforma precisa; use o que ele fornece. A criptografia manual é a maior fonte de vulnerabilidades de segurança em aplicativos da web porque os desenvolvedores subestimam a sutileza e os casos extremos.

Conclusão: as limitações fazem parte do produto — a calculadora de hash ToolAcre SHA oferece os quatro algoritmos que o navegador implementa nativamente e documenta esse limite

A calculadora de hash ToolAcre SHA aborda essa restrição diretamente: você vê exatamente os quatro algoritmos que o Web Crypto fornece, nem mais nem menos. Se você colar um valor e pensar “Preciso de MD5”, a ausência é intencional. Se você precisar, isso é um sinal de que seu sistema possui um componente legado que precisa de um manuseio cuidadoso – exatamente o tipo de coisa para a qual serve uma ferramenta especializada de migração do lado do servidor, não um utilitário de navegador. A honestidade da ferramenta sobre o que ela faz e o que não oferece é em si uma informação valiosa.

O design do Web Crypto reflete décadas de prática criptográfica: algoritmos padronizados, auditados e comprovados em ampla implantação. SHA-256 e SHA-512 são os padrões sensatos. SHA-384 carrega sua linhagem TLS. SHA-1 está lá porque a web tem resumos SHA-1 que precisarão ser verificados por anos. MD5 e SHA-3 não estão lá porque MD5 está quebrado e SHA-3 ainda não é crítico para a plataforma.