Pesquisa Mostra Viabilidade de Ataques de “Colisão” com MD5

A Microsoft publicou esta semana o advisory de segurança 961059 sobre um ataque publicado no dia 30 onde pesquisadores conseguiram gerar um certificado digital fraudulento usando um ataque contra o algoritmo de hash MD5.

Este tipo de ataque é conhecido há alguns anos, mas ao que se saiba nunca tinham sido feitos na prática contra um certificado digital emitido por uma autoridade certificadora. Apesar de este ataque não aumentar de forma significativa os riscos para os usuários, a Microsoft está monitorando a situação e trabalhando com as autoridades certificadoras que fazem parte do Microsoft Root Certificate Program para que o algoritmo MD5 seja abandonado em favor de outros algoritmos.

Como Foi Feito o Ataque

O ataque é feito gerando uma chamada “colisão” no algoritmo de hash MD5. Uma colisão acontece quando dois conjunto de dados tem o mesmo resultado de hash. Algoritmos como o MD5 são desenhados para que colisões sejam extremamente difíceis de serem encontradas, uma propriedade chamada collision resistance que é fundamental para a segurança de assinaturas digitais.

Isto porque uma assinatura digital é feita encriptando o hash de um dado com a chave privada de um algoritmo RSA. Mais importante a validação dessa assinatura é feito decriptando-a com a chave pública e comparando com o hash calculado para o dado. Ou seja, se eu tenho dois dados com o mesmo hash, ao assinar um eu também estou na prática assinando o outro!

O ataque fez exatamente isso: utilizou um conjunto de CPUs Cell para gerar dois certificados com o mesmo hash MD5. Um destes certificados, vamos chamá-lo aqui de “original”, foi enviado para ser assinado por uma autoridade certificadora, escolhida cuidadosamente por ser uma das poucas que ainda usa MD5 como algoritmo de hash e por ter um número de série previsível (mais sobre isso em instantes). Após ele ser assinado, a assinatura  foi copiada deste certificado “original” para o outro certificado, chamado aqui de “clone”, tornando ele igualmente válido.

Para tornar o ataque mais letal, os atacantes configuraram o certificado “clone” como sendo um certificado de autoridade certificadora – ou seja, usando ele poderiam assinar novos certificados digitais igualmente válidos.

Um ponto complicador para o ataque é que existe uma parte do conteúdo do certificado que é controlado pela autoridade certificadora: o número de série. Como o número de série faz parte do cálculo do hash, para computar a colisão os atacantes precisariam saber com antecedência qual seria o número de série que a AC iria designar para aquele certificado. No caso os atacantes escolheram um AC que atribui números de série sequencialmente, e puderam com razoável certeza adivinhar qual seria este número (eles também poderiam submeter a mesma requisição de certificado várias vezes até chegar no número desejado).

Impacto

Colisões encontradas no algoritmo MD5 não são propriamente novidade. Em 2004 a pesquisadora chinesa Wang Xiaoyun e outros demonstraram estas colisões, e em 2005 mostraram dois certificados digitais com o mesmo hash MD5.

Já nesta época grande parte das organizações começou a abandonar o uso do MD5, e a maioria das autoridades certificadoras hoje utiliza o algoritmo SHA-1, mais forte (mas ele mesmo também já no final da sua vida útil). Na ICP-Brasil o uso de MD5 não é permitido e já existem estudos para uma nova cadeia usando a família SHA-2 (SHA-256 ou SHA-512). Certificados assinados usando algoritmo SHA-1 não são afetados por este ataque.

Certificados Extended Validation (EV) também não usam o algoritmo SHA-1 e não são afetados por esta vulnerabilidade. Estes certificados podem ser reconhecidos por uma  barra verde mostrada no browser, como mostra a figura abaixo:

Todas as autoridades certificadoras devem deixar assinar novos certificados com MD5, ou passar a randomizar os números de série, ou (de preferência) fazer ambos. A empresa que sofreu o ataque já anunciou que descontinuou o uso de MD5 na autoridade certificadora envolvida, e a Microsoft está trabalhando para que todas as CAs comerciais façam o mesmo.

Os certificados já emitidos anteriormente usando MD5 não são afetados pelo ataque feito agora. O ataque exige que a requisição do certificado seja construído cuidadosamente para que seja feita a colisão, e não existe forma conhecida de gerar uma colisão para um certificado já existente. A Microsoft não tem conhecimento de nenhum outro ataque feito anteriormente e os certificados emitidos antes da publicação do ataque não necessitam ser revogados.

Recomendações e Mais Informações

Se a sua organização possui uma PKI corporativa é recomendado que você adote os mesmos passos para as suas ACs. O software de autoridade certificadora do Windows Server (Windows Certificate Services) usa o algoritmo de hash SHA-1 por default (suportando também SHA-2 no Windows Server 2008) e sempre randomiza os números de série dos certificados, e portanto não está vulnerável a este ataque.

[Dentro da Microsoft pelas regras do processo SDL nenhum código novo pode utilizar MD5 ou mesmo SHA-1, sendo obrigatório o uso do SHA-2.]

A Microsoft recomenda também que todos os sistemas estejam configurados para verificar a informação de revogação dos certificados. Os passos para verificar que a revogação está ativada no Internet Explorer estão listados em https://blogs.technet.com/swi/archive/2008/12/30/information-regarding-md5-collisions-problem.aspx, junto com mais informações sobre este ataque.