Função esponja

Origem: Wikipédia, a enciclopédia livre.
Illustration of the sponge construction
A construção esponja para funções de hash. pi são blocos da string de entrada, zi são blocos do hash de saída.

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[editar | editar código-fonte]

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.

Tipos de Funções Esponja[editar | editar código-fonte]

Keccak[editar | editar código-fonte]

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[editar | editar código-fonte]

  • 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[editar | editar código-fonte]

  • 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;

Ver também[editar | editar código-fonte]

Referências

Ligações externas[editar | editar código-fonte]