Aluno: André Satoshi Fujii de Siqueira
Orientador: Routo Terada
Estudo de funções criptográficas sponge e algoritmo Keccak/SHA-3
Desde o seu surgimento, a utilização da internet tem se tornado cada vez mais frequente na vida das pessoas, sendo utilizada para variados fins, como troca de mensagens, transações monetárias, entre outros. Tal sucesso foi obtido graças ao avanço da criptografia, pois sem a utilização, a segurança dos dados que trafegam pelas redes de computadores estaria comprometida, pois estes estariam expostos a terceiros que podem interceptar esses dados e obter informações confidenciais de outros usuários da rede, a fim de aplicar fraudes e falsificações.
Dentre os diversos protocolos de criptografia utilizados para garantir a segurança dos dados na rede estão as funções espalhamento (hashing). Estas mapeiam dados de entrada de comprimento arbitrário para dados de comprimento fixo (relativamente menor que o comprimento da entrada), podendo ser utilizadas, por exemplo, para verificação de integridade de arquivos ou mensagens, verificação de senha, identificação de arquivos ou dados.
Em 1993, o National Institute of Standards and Technology (NIST) publicou o algoritmo hash criptográfico Secure Hash Algorithm 1 (SHA-1), como a função hashing a ser utilizada pelo Digital Signature Algorithm (DSA) para a geração de assinaturas criptográficas. Posteriormente, foi substituída pelo SHA-2, uma versão modificada do algoritmo mais resistente à colisão e ataques de pré-imagem.
Em 2005, Biham et al. encontraram colisão do SHA reduzido a 58 iterações com complexidade reduzida em relação ao ataque por paradoxo de aniversário e Wang et al. publicaram um algoritmo para colisão do SHA-1 sem redução de iterações.
Diante desses fatos, em 2007, o NIST anunciou uma competição pública para eleger um novo algoritmo de hash criptográfico, que se tornaria o sucessor do SHA-1.
Em 2012, o algoritmo Keccak foi eleito o vencedor da competição, que posteriormente se tornou o SHA-3.
A contrução sponge é caracterizada por uma função com entrada e saída de comprimento arbitrário, definidos por construção ou pelo usuário. Tal comportamento é obtido ao dividir a entrada em blocos de comprimento fixo e aplicar iterativamente operações OU-exclusivo em um estado inicial com cada bloco da entrada, intercalando com uma função de transformação ou permutação entre as operações, de forma que a saída possua o comprimento desejado.
Devido a sua natureza, funções sponge podem ser usadas para construir primitivas criptográficas, como funções hashing e cifras de fluxo.
Keccak é um algoritmo hash criptográfico que foi construído a partir de uma função sponge.
Estudar a construção sponge de funções criptográficas e o processo de criação do algoritmo Keccak a partir desta e analisar a sua segurança.