Função esponja

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

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

  • Keccak;[3]
  • Quark;[4]
  • Photon;[5]
  • Spongent;[6]
  • Gluon.[7]

Keccak

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;

Ver também

  • SHA-3
  • SHA-2
  • SHA-1

Referências

  1. The Keccak Team. «Duplexing The Sponge» (PDF) 
  2. The Keccak Team. «The Sponge Functions Corner» 
  3. The Keccak Team. «The Keccak sponge function family» 
  4. «Quark: a lightweight hash» 
  5. «The PHOTON Family of Lightweight Hash Functions» 
  6. «Spongent» 
  7. «The GLUON family: a lightweight Hash function family based on FCSRs» (PDF) 
  8. «The Keccak SHA-3 submission» (PDF) 
  9. Al-shaikhil, Imad; Alahmad, Mohammad; Munthir, Khanssaa. «Hash Function of Finalist SHA-3: Analysis Study» (PDF) 

Ligações externas

  • «The Sponge Functions Corner» (em inglês) 
  • «Draft FIPS 202-SHA-3 Standard:Permutation-Based Hash and Extendable-Output Functions» (PDF) (em inglês)