A Função Esponja ou Construção Esponja (do inglês, Sponge Function or Sponje Construction) é uma função de mapeamento que recebe como entrada dados de comprimento variável e gera como saída uma mensagem também de comprimento variável, essa função baseia-se em uma permutação (ou transformação) de comprimento fixo e em uma regra de preenchimento. A função esponja pode ser usada para modelar ou implementar a maioria das primitivas criptográficas, incluindo função hash, códigos de autenticação de mensagens, cifra de fluxo, cifra de bloco, gerador de números pseudoaleatórios e autenticação.[1]
A construção
A construção esponja é mostrada na figura. Primeiramente, a string de entrada é completada com uma regra de preenchimento e separada em blocos de r bits. Então os b bits de estado são inicializados com zero e a construção esponja prossegue em duas fases[2]:
Na fase de absorção, mais a esquerda, os blocos de entrada de r-bits passam por uma operação XOR nos primeiros r do estado, alternando-se com aplicações da função f. Quando todos os blocos de entrada são processados, a construção esponja muda para a fase de compressão.
Na fase de compressão, os primeiros r bits do estado são retornados como blocos de saída, alternando-se com aplicações da função f. O número de blocos de saída é escolhido livremente pelo usuário.
Keccak é uma família de funções esponja, a família que ganhou maior notoriedade por ter vencido o concurso promovido pelo NIST para escolher a nova função de hash SHA-3. Keccak é uma função de hash criptográfica desenvolvida por Guido Bertoni, Joan Daemen, Michael Peters e Gilles Van Assche. Na versão apresentada na competição[8] do SHA-3 suporta quatro diferentes comprimentos de saída 224, 256, 384 e 512 bits.[9]
Vantagem
A função não se baseia em construção anterior por isso não é vulnerável a ataques genéricos já existentes;
Possui diferente estrutura interna;
Utiliza diferentes operações matemáticas;
Desvantagem
Por ser uma função relativamente nova há uma desconfiança no que diz respeito a ataques criptoanalíticos que ainda não foram descobertos e que podem encontrar pontos fracos na função;