O Que É SHA-3?
SHA-3 (Secure Hash Algorithm 3) é o membro mais recente da família Secure Hash Algorithm, publicado pelo NIST em 2015. Diferentemente do SHA-2, que é baseado na construção Merkle-Damgård, o SHA-3 usa um design fundamentalmente diferente chamado construção esponja. Esta diferença torna o SHA-3 resistente a certas classes de ataques que ameaçam o SHA-2.
O algoritmo originalmente chamado Keccak (pronuncia-se "ketchak") venceu a competição de funções hash do NIST em 2012 após um processo de avaliação pública de cinco anos. O NIST padronizou quatro comprimentos de hash: SHA3-224, SHA3-256, SHA3-384 e SHA3-512, além de duas funções de saída extensível (XOFs): SHAKE128 e SHAKE256.
Como o SHA-3 Funciona
SHA-3 usa a construção esponja, que consiste em duas fases: absorção e compressão. Na fase de absorção, os dados de entrada são alimentados no estado interno em blocos. Na fase de compressão, a saída do hash é extraída.
O estado interno do SHA-3 é um array 3D de lanes 5×5, cada um contendo 64 bits, para um tamanho total de estado de 1600 bits. A função de permutação, chamada Keccak-f, é aplicada iterativamente durante ambas as fases para misturar o estado.
Este design dá ao SHA-3 várias vantagens:
- Não é vulnerável a ataques de extensão de comprimento que afetam o SHA-2
- A construção esponja fornece uma prova de segurança
- Tem bom desempenho em implementações de hardware
- As variantes XOF produzem saída de comprimento arbitrariamente longo
SHA-3 vs SHA-2
| Característica | SHA-2 | SHA-3 |
|---|---|---|
| Construção | Merkle-Damgård | Esponja (Keccak) |
| Publicado | 2001 | 2015 |
| Tamanhos de saída | 224, 256, 384, 512 | 224, 256, 384, 512 + XOF |
| Extensão de comprimento | Vulnerável | Resistente |
| Velocidade em software | Mais rápido | Mais lento |
| Velocidade em hardware | Moderada | Excelente |
| Resistência a canal lateral | Boa | Melhor |
Quando Usar SHA-3
SHA-3 não pretende substituir SHA-2 imediatamente. SHA-2 permanece seguro, e nenhum ataque prático reduz sua segurança abaixo de níveis aceitáveis. SHA-3 existe como um backup caso SHA-2 seja eventualmente quebrado.
Use SHA-3 quando:
- Você precisa de resistência a ataques de extensão de comprimento
- Sua aplicação roda em hardware com aceleração SHA-3
- Você quer diversificar dependências criptográficas do SHA-2
- Você precisa de uma função hash com um design fundamentalmente diferente (defesa em profundidade)
- Você precisa de saída de comprimento variável do SHAKE128 ou SHAKE256
Exemplos de Código
// PHP
echo hash('sha3-256', 'hello');
echo hash('sha3-512', 'hello');
import hashlib
print(hashlib.sha3_256(b'hello').hexdigest())
print(hashlib.sha3_512(b'hello').hexdigest())
# SHAKE (saída extensível)
print(hashlib.shake_128(b'hello').hexdigest(16)) # 16 bytes de saída
print(hashlib.shake_256(b'hello').hexdigest(32)) # 32 bytes de saída
// Node.js
const crypto = require('crypto');
console.log(crypto.createHash('sha3-256').update('hello').digest('hex'));
console.log(crypto.createHash('sha3-512').update('hello').digest('hex'));
SHAKE128 e SHAKE256
SHAKE (Secure Hash Algorithm KEccak) é uma função de saída extensível (XOF). Diferentemente das funções hash de comprimento fixo, as XOFs produzem saída de qualquer comprimento desejado. SHAKE128 fornece segurança de 128 bits com comprimento de saída arbitrário, enquanto SHAKE256 fornece segurança de 256 bits.
XOFs são úteis para:
- Gerar chaves criptográficas de comprimento arbitrário a partir de uma semente
- Criar valores de mascaramento em esquemas de criptografia
- Construir cifras de fluxo e geradores de números aleatórios
Ferramenta Online
O Gerador de Hash SHA-3 no Help2Code calcula hashes SHA3-224, SHA3-256, SHA3-384 e SHA3-512 instantaneamente. Compare a saída com hashes SHA-2 usando o Gerador de Hash Múltiplo.
Conclusão
SHA-3 é uma função hash moderna e bem projetada com uma margem de segurança conservadora. Embora SHA-2 continue sendo o padrão para a maioria das aplicações, SHA-3 é uma excelente escolha quando você precisa de uma função hash de backup para defesa em profundidade, ou quando precisa das capacidades únicas das funções de saída extensível SHAKE.