Função esponja
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
- ↑ The Keccak Team. «Duplexing The Sponge» (PDF)
- ↑ The Keccak Team. «The Sponge Functions Corner»
- ↑ The Keccak Team. «The Keccak sponge function family»
- ↑ «Quark: a lightweight hash»
- ↑ «The PHOTON Family of Lightweight Hash Functions»
- ↑ «Spongent»
- ↑ «The GLUON family: a lightweight Hash function family based on FCSRs» (PDF)
- ↑ «The Keccak SHA-3 submission» (PDF)
- ↑ Al-shaikhil, Imad; Alahmad, Mohammad; Munthir, Khanssaa. «Hash Function of Finalist SHA-3: Analysis Study» (PDF)
Ligações externas
[editar | editar código-fonte]- «The Sponge Functions Corner» (em inglês)
- «Draft FIPS 202-SHA-3 Standard:Permutation-Based Hash and Extendable-Output Functions» (PDF) (em inglês)