2019/05/19

OWASP Latam Tour 2019


Me perdí el comienzo y el final por logística laboral y familiar, pero pude asistir a tres charlas aparte de dar la mía.

Soy un tanto reacio a estar contando lo que los mismos autores pueden contar, así que sólo cuento lo mínimo y alguna opinión de haberla. 
Muchas gracias a  Andrés, Martín y la nueva organización por confiarme ese rato.

La primera charla fue la de Miguel Summer Elias (http://www.informaticalegal.com.ar/) que suele dar explicaciones claras y amenas y esta vez no fue la excepción. Tuvo la innovación de usar una tela touch, con la cual podía controlar con la mano y el audio la presentación ;-)

Luego la mía, "Forzando brutalmente MD5...", que originalmente eran cuatro de cinco charlas, tratándose de calcular MD5 con CPU, SIMD, multicore, supercomputadora y GPGPU.
La última, de un modo radicalmente distinto y que es la que realmente me interesa, la tengo elaborada, me falta implementar el código y trata de hacer lo mismo con FPGA.
Había presentado CPU y SIMD en H4CK3D 2018 pero ahora se le ha hecho largo en nombre, "Forzando brutalmente MD5 con CPU, SIMD, threads, forks, supercomputadora y GPU". Dos días antes caí en cuenta que debió llamarse "Forzando brutalmente MD5 con computadoras" y la última "Forzando brutalmente MD5 sin computadoras".

Primero hice un breve resumen de hashing, para que sirve, la implementación de MD5, optimizaciones como las que menciono más abajo como "mías", la descripción de cada caso, caminos fallidos y teniendo 40 minutos medio que algunas cosas quedaron muy superficiales, otras se cayeron y alguna me la olvidé.

Lo que me han dado ganas de hacer y lo intentaré, es un análisis cuantitivo en tres dimensiones:

  • pasar de CPU a SIMD que son dos casos
  • optimización de compilador que son dos casos
  • optimizaciones mías, como padding fijo, hardcodeo de constantes y loop unroll

Esto último podría ser considerando las ocho combinaciones o quizas cinco asi:

  • padding fijo
  • padding fijo + constantes
  • padding fijo + loop unroll
  • padding fijo + constantes + loop unroll 

Me quedarian entonces 32 o 16 combinaciones, tedioso pero factible.

Para el año pasado cuando estaba por mostrar en el trabajo la parte de GPGPU,  Andrés me había ofrecido acceso a su minador pero se fué de vacaciones y no llegó a configurarme el acceso, lo cual fué una suerte para mí, pues no mucho después, mientras él monitoreaba remotamente el consumo halló 0 Watts. Fué a fijarse y los aislantes de los cables de alimentación se habían fundido, si hubiera ocurrido mientras yo la usaba... Más suerte para Andrés que no tuvo un incendio.


Luego Leandro Mantovani nos contó como utilizar unos logs de certificados TLS como alerta temprana para detectar sitios vulnerables, muy ingenioso

Finalmente, nuevamente suerte en relación a Andrés, su charla la dió en el slot previo, si no me la hubiese perdido. Fue una muy buen ensayo para... BlackHat! ¡qué capo!



La agenda y los links, ...


https://www.owasp.org/index.php/LatamTour2019#tab=ARGENTINA_-_Buenos_Aires


...la presentación, ...


https://www.owasp.org/images/d/d5/Forzando_Brutalmente_MD5_con_computadoras_-_OWASP_2019_-_Carlos_Pantelides.pdf


...las cifras a medio cocinar, ...


https://www.owasp.org/images/5/53/Forzando_Brutalmente_MD5_con_computadoras_-_Cifras_-_OWASP_2019_-_Carlos_Pantelides.pdf


...las entradas en este blog y ...


https://seguridad-agile.blogspot.com/p/indice.html#md5


...el código.

https://github.com/cpantel/Forzando-Brutalmente-MD5

 

Forzando Brutalmente MD5 - parte 5 - GPGPU

Forzando Brutalmente MD5 - parte 5 - GPGPU


¿Venís de leer la intro, la parte 1, la parte 2, la parte 3 y la parte 4?



El tema


Finalemente, dentro del terreno de usar computadoras para calcular MD5, llegamos si no a lo último en términos tecnológicos a lo más potente.

En la misma linea de la supercomputadora, se usan CPUs sencillas, casi ni califican, optimizadas para cálculo. Y son muchas, centenares o miles.

Código

  • https://github.com/cpantel/Forzando-Brutalmente-MD5/tree/master/v7_cuda
Seguí con la parte 6, uno de estos días