sábado, 28 de abril de 2007

Considerações sobre a Família de Algoritmos SHA-1

Uma das utilidades da criptografia é a garantia da correta identificação dos pares e a integridade das informações trafegadas pelo canal criado. Uma das formas de realizar essas tarefas é através do uso de chaves simétricas associadas a funções de hash.
Por função de entende-se como aquela capaz de receber uma entrada de tamanho variável e gerar um texto com tamanho fixo (fingerprint), que a representa. Desta forma, qualquer alteração no dado de entrada gera um valor diferente de saída, permitindo detectar qualquer adulteração na mensagem de entrada, ou seja, se garante a integridade da mensagem.
Para prover a capacidade de autenticação da mensagem, ou seja a correta identificação dos pares do canal, as funções de hash usam uma chave na composição do fingerprint da mensagem, onde esse tipo particular de função recebe o nome de Message Authentication Code (MAC) [STINSON, 2002].
De forma resumida, para prover apenas a integridade de uma mensagem basta o uso de uma função de hash comum (unkeyed function), porém quando se deseja autenticação associado à integridade, deve-se usar uma função MAC.
As funções MAC são implementadas através de um algoritmo simétrico, onde em um canal seguro estabelecido é usada à chave anteriormente acordada (ou uma variação da mesma) para fins de autenticação e garantia da integridade da mensagem.
Apesar de ser computacionalmente mais eficiente, existem casos onde não existe um segredo compartilhado entre os pares. Nesses casos só resta o uso assinaturas digitais calculadas através de algoritmos assimétricos. Porém devido a sua ineficiência, o uso desses algoritmos em segmentos de dados muito grandes não é recomendado. Isso faz com que sejam usadas funções de hash sobre a mensagem e a assinatura assimétrica é aplicada somente sobre o fragmento comprimido e não sobre a mensagem inteira, agilizando o processo.
Uma das funções mais utilizadas para prover integridade é o SHA-1, enquanto quando deseja-se autenticação associada, usa-se o HMAC-SHA-1. Esses algoritmos pertencem a uma família de algoritmos desenvolvidos pela National Security Agency (NSA), tendo a sua divulgação realizada em 1995.
A família SHA-1 produz uma mensagem autenticada de 160 bits e tem como entrada uma mensagem de tamanho variável (máximo de 264 bits) e uma chave de 80 bits.
Apesar de estar em uso bastante intenso atualmente e previsto como protocolo de autenticação padrão para vários protocolos em uso na Internet, existem vários estudos comprovando a sua fragilidade.
Um ataque descrito por [WANG, 2005] apresentou que foram encontradas colisões no algoritmo após apenas 269 interações, onde o trabalho de quebra do mesmo por força bruta é da ordem de 280 operações. Para realizar ataques foi necessário técnicas analíticas avançadas, porém diferentemente de ataques anteriores, que demonstravam fragilidades em versões simplificadas do algoritmo, esse foi demonstrado na versão integral do mesmo.
Porém um grande problema apontado por esse estudo é a fragilidade encontrada nas assinaturas digitais, pois conforme comentado anteriormente, devido a critérios de eficiência, o algoritmo assimétrico não é usado em toda mensagem, mas apenas sobre um fingerprint gerado através de uma função MAC.
Mesmo assim, o NIST anunciou que pretende usar o protocolo até 2010 [NIST, 2004], quando deve o substituir pela sua versão mais moderna, o HMAC-SHA2.


Referências Bibliográficas:

[STINSON, 2002] Stinson, D.R. Cryptography – Theory and Practice, 2nd Edition. Chapman & Hall/CRC, 2002.

[NIST, 2004] NIST Brief Comments on Recent Cryptanalytic Attacks on Secure Hashing Functions andthe Continued Security Provided by SHA-1H. Disponível em: http://csrc.nist.gov/hash_standards_comments.pdf. Acessado em 27 de setembro de 2006.

[WANG, 2005] Wang, X., Yin Y.L. and Yu H. Finding Collisions in the Full SHA-1. CRYPTO 2005. Disponível em: http://www.infosec.sdu.edu.cn/paper/sha1-crypto-auth-new-2-yao.pdf. Acessado em 27 de abril de 2007.