Keccak

Avançado

Keccak (pronunciado “ketchak”) é uma função criptográfica versátil desenvolvida por Guido Bertoni, Joan Daemen, Michaël Peeters e Gilles Van Assche. Embora o Keccak possa ser aplicado em outros contextos, ele é mais conhecido como uma função de hash que oferece níveis de segurança mais altos em comparação com algoritmos de hash mais antigos, como SHA-1 e SHA-2.

A sigla SHA significa Secure Hash Algorithm e se refere a um conjunto de funções criptográficas de hash publicadas pelo Instituto Nacional de Padrões e Tecnologia (NIST) dos EUA. Os algoritmos SHA-1 e SHA-2 foram criados pela Agência de Segurança Nacional (NSA) dos EUA e, portanto, apresentam uma estrutura semelhante. Embora o Keccak ofereça suporte para o mesmo tamanho de output (comprimento de hash de saída) que o SHA-2, seu mecanismo de funcionamento é bem diferente. Ainda assim, o Keccak faz parte da família SHA e também é chamado de SHA-3.

Ataques teóricos ao SHA-1 foram realizados em 2004 e disponibilizados publicamente em 2005. Alguns anos depois, em 2011, o SHA-2 foi declarado pelo NIST como a nova função de hash padrão a ser utilizada. No entanto, a migração do SHA-1 para o SHA-2 foi bastante lenta e somente no início de 2017 que uma grande parcela de desenvolvedores e cientistas da computação finalmente migrou para o SHA-2. Pouco depois, em fevereiro de 2017, o Google anunciou um ataque de colisão bem-sucedido ao SHA-1 e, desde então, o SHA-1 não é mais considerado seguro e seu uso é desencorajado.
A função Keccak (SHA-3) começou a ser desenvolvida em 2007, depois que o NIST anunciou uma competição pública e um processo de verificação, buscando uma nova função de hash criptográfica que pudesse superar as potenciais falhas das versões SHA-1 e SHA-2 anteriores.

Embora nenhum ataque significativo ao SHA-2 tenha sido demonstrado ainda, espera-se que as funções de hash se tornem vulneráveis com o tempo e que leve anos para que uma nova função padrão seja desenvolvida. Levando isso em consideração, juntamente com as demonstrações de ataques bem-sucedidos realizados contra o SHA-1 em 2004 e 2005, o NIST percebeu a necessidade de criar um novo algoritmo de hash criptográfico. Em 2012, o NIST declarou o Keccak como o algoritmo vencedor da competição e ele foi padronizado como o mais novo membro da família SHA (daí o nome SHA-3). 

Uma das razões pelas quais o NIST escolheu o Keccak é devido à sua estrutura inovadora, que provou ser mais segura e eficiente do que a de outros algoritmos. Tecnicamente, o algoritmo SHA-3 depende das chamadas funções esponja (ou construção esponja) - em contraste com a construção Merkle Damgård usada pelo SHA-1 e SHA-2.

Por enquanto, o SHA-2 ainda é considerado seguro e é amplamente utilizado. Por exemplo, SHA-256 é usado pelo Bitcoin e outras criptomoedas e desempenha um papel essencial no processo de mineração. Pode haver um aumento na adoção do SHA-3 no futuro, uma vez que ele parece estar longe de ser vulnerável a ataques. De qualquer forma, é provável que vejamos o desenvolvimento de mais algoritmos de hash criptográficos nos próximos anos, à medida que a área da criptografia avança e novas falhas ou vulnerabilidades são descobertas.