sexta-feira, 21 de novembro de 2014

RSA Public-Key info analyzer

Alguns anos atrás eu havia criado uma ferramenta para levantar informações sobre um certificado SSL usando RSA.  O objetivo era fornecer algumas informações que poderiam depois ser usadas em outros ataques.

Resolvi publicar ela num único arquivo .c para demonstrar como é fácil programar em BIGNUM usando SSl API para obter informações úteis e simples que podem ser usadas em ataques mais avançados.

A ferramenta se chama "RSa Analyzer" e o uso é bem simples. Inicialmente podemos "baixar" um certificado de um site e depois exibir as informações dele. A tela abaixo demonstra isso:

$ echo "\n\n" | openssl s_client -connect www.google.com:443 > saida.http ; awk '/BEGIN CERTIFICATE/,/END CERTIFICATE/' saida.http > google.crt
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify error:num=20:unable to get local issuer certificate
verify return:0
DONE

segunda-feira, 17 de novembro de 2014

Grothendieck morreu. Alexey Chervonenkis também.



Não posso deixar de registrar a morte de Alexander Grothendieck ocorrida na semana passada, em 13 de novembro de 2014.

Ele foi um dos maiores matemáticos do século passado e uma figura polêmica que viveu alguns anos difíceis no Brasil e criou uma área forte da geometria algébrica.

Teorema Fundamental da Aritmética em BIGNUM

Segue implementação do Teorema Fundamental da Aritmética em BIGNUM do OpenSSL:

---------- tfa.c ----------
/* Kryptonia - Cryptography Intelligent Research.
 * http://www.securitylabs.com.br/
 *
 * Projeto Zahlen - Teorema Fundamental da Aritmetica.
 *
 * Glaudson Ocampos <glaudson@securitylabs.com.br>
 *
 * Compile com:
 *
 * $ gcc -o tfa tfa.c -lssl -lcrypto -Wall
 *
 *
 * Implementamos apenas trial division para checar novos primos.
 * Como se trata apenas de algo conceitual, nao recomendo a utilizacao
 * de numeros gigantes.
 *
 */

quarta-feira, 5 de novembro de 2014

Verificando Seguranca de Modulo RSA em Relacao ao Expoente Publico e

O algoritmo de "criptografia"(cifragem) do RSA eh descrito da seguinte forma:

C = M ^ e (mod N)

Onde temos:

C = Texto Cifrado
M = Texto Limpo
e = expoente publico
N = Modulo N (Numero inteiro gigante gerado a partir de dois primos(p e q)).

Nesse tipo de ataque(que podemos chamar de recuperacao de mensagens), nao nos interessa
o algoritmo de decriptografia.

Håstad's Broadcast Attack

Segue implementação de Håstad's Broadcast Attack em MPIR. Usei esse código para resolver um challenge famoso de criptografia.