SlideShare a Scribd company logo
1 of 20
Download to read offline
´             ´
                  Electronica digital basica
         Circuitos digitales reconfigurables
                       ´
        Implementacion de MD5 en VHDL




 ´
Tecnicas de ataque por fuerza bruta contra
          MD5 mediante FPGA

                            Alvaro Gamez
                     alvaro.gamez@hazent.com



                           4 de febrero de 2012




  Alvaro Gamez alvaro.gamez@hazent.com          ´
                                               Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
´             ´
                         Electronica digital basica
                Circuitos digitales reconfigurables
                              ´
               Implementacion de MD5 en VHDL


Contenidos

  1         ´              ´
      Electronica digital basica
         Circuitos elementales
         Circuitos complejos: procesadores

  2   Circuitos digitales reconfigurables
         FPGAs
         VHDL

  3               ´
      Implementacion de MD5 en VHDL
                                ´
        Algoritmo MD5: explicacion
                     ´
        Implementacion del algoritmo MD5 en VHDL
        Conclusiones y resultados


         Alvaro Gamez alvaro.gamez@hazent.com          ´
                                                      Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
´             ´
                            Electronica digital basica
                                                         Circuitos elementales
                   Circuitos digitales reconfigurables
                                                         Circuitos complejos: procesadores
                                 ´
                  Implementacion de MD5 en VHDL


   ´
¿Que hay dentro de un circuito integrado? (I)
                        ´
Transistores y puertas logicas


                                                          ´        ´
                                             Una puerta logica esta formada por
                                             varios transistores MOS
                                             complementarios (un tipo P y un tipo
                                             N).
                                                                    ´
                                             Puede tener una o mas entradas, pero
                                              ´
                                             solo tiene una salida.
    Esta otra puerta, representada por su s´mbolo, es una puerta
                                           ı
    AND.
                                                         A           B           A ·B
                                                         0           0           0
                                                         0           1           0
                                                         1           0           0
                                                         1           1           1
            Alvaro Gamez alvaro.gamez@hazent.com          ´
                                                         Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
´             ´
                            Electronica digital basica
                                                         Circuitos elementales
                   Circuitos digitales reconfigurables
                                                         Circuitos complejos: procesadores
                                 ´
                  Implementacion de MD5 en VHDL


   ´
¿Que hay dentro de un circuito integrado? (II)
Circuitos combinacionales y registros


                                                                                             S
                                                                                     D           Q
  A
  B
                                                                  S
 Cin                                                                                             Q
                                                                                             R

                                                                  Cout         Registro tipo D:
                                                                                         ´
                                                                               unidad basica de
                                                                               almacenamiento
 Sumador completo (con acarreo):                                               Su salida depende
 S = A + B + Cin . Su salida depende                                           ´
                                                                               unicamente de sus
 ´
 unicamente de sus entradas.                                                   entradas, pero
                                                                               solo cambia con
                                                                               un ciclo de reloj.
            Alvaro Gamez alvaro.gamez@hazent.com          ´
                                                         Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
´             ´
                          Electronica digital basica
                                                       Circuitos elementales
                 Circuitos digitales reconfigurables
                                                       Circuitos complejos: procesadores
                               ´
                Implementacion de MD5 en VHDL


   ´
¿Que hay dentro de un circuito integrado? (II)
 ´
Maquinas de estados




   Contador de 4 bits: desde “0000” (0) hasta “1111” (15).
   Su salida depende de sus entradas y de su estado actual, y su
                 ´
   estado cambia unicamente con un ciclo de reloj.
          Alvaro Gamez alvaro.gamez@hazent.com          ´
                                                       Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
´             ´
                                      Electronica digital basica
                                                                            Circuitos elementales
                             Circuitos digitales reconfigurables
                                                                            Circuitos complejos: procesadores
                                           ´
                            Implementacion de MD5 en VHDL


   ´
¿Que hay dentro de un procesador?
  Intel 4004 Architecture                                                    D0-D3 bidirectional
                                                                                 Data Bus
                                                                     Data Bus
                                                                      Buffer



                                                               4 Bit internal Data Bus



                              Temp.
        Accumulator                                                  Instruction                                                                       Register
                             Register
                                                                      Register                                                                        Multiplexer
                                                                                                                                                      0             1

                                             Flag                                                               Stack
                                                                                                                                                      2             3
                                          Flip Flops                                                          Multiplexer




                                                                                                                              Index Register Select
                                                                     Instruction                            Program Counter                           4             5




                                                                                            Stack Pointer
                                                                    Decoder and
                                                                      Machine                                 Level No. 1
                                                                                                                                                      6             7
                                                                       Cycle
                                                                                                              Level No. 2
                                                                      Encoding
                                                ALU                                                                                                   8             9
                                                                                                              Level No. 3
                                                                                                                                                      10            11
                                                                                                              Address
                                                                                                               Stack
                                                                                                                                                      12            13

                                           Decimal                                                                                                    14            15
                                            Adjust
                                                                                                                                                          Scratch
                                                                                                                                                           Pad
                                               Timing and Control
                            ROM Control   RAM Control           Test Sync Clocks
                                                                                         Reset
                 Alvaro Gamez alvaro.gamez@hazent.com                        ´
                                                                            Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
´             ´
                        Electronica digital basica
                                                     FPGAs
               Circuitos digitales reconfigurables
                                                     VHDL
                             ´
              Implementacion de MD5 en VHDL


   ´
¿Que hay dentro de una FPGA?
  En el interior de una FPGA hay una enorme matriz de circuitos
  interconectados entre s´. Cada una de las celdas de esta matriz
                          ı
                                       ´
  (en el orden de decenas de miles) esta formada por diversos
  circuitos digitales como los que hemos visto anteriormente.




        Alvaro Gamez alvaro.gamez@hazent.com          ´
                                                     Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
´             ´
                           Electronica digital basica
                                                            FPGAs
                  Circuitos digitales reconfigurables
                                                            VHDL
                                ´
                 Implementacion de MD5 en VHDL


  ´
¿Como se configuran las FPGAs?
                      ´
Lenguajes de descripcion hardware: VHDL

       ´
   El codigo VHDL...
                                          1    DFF : process (RST, CLK)
                                          2    begin
                                          3      i f RST = ’ 1 ’ then
                                          4         Q <= ’ 0 ’ ;
 ... no es un programa.                   5      e l s i f r i s i n g e d g e (CLK) then
 ... no se ejecuta.                       6         Q <= D;
                                          7         Q <= not D;
                                          8      end i f ;
                                          9    end process DFF ;


      ´
 El codigo VHDL... define                                     S
                                                        D         Q
    ´
 que hardware utilizar y
  ´
 como interconectarlo.
                                                                  Q
                                                             R
           Alvaro Gamez alvaro.gamez@hazent.com              ´
                                                            Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
´             ´
                              Electronica digital basica
                                                           FPGAs
                     Circuitos digitales reconfigurables
                                                           VHDL
                                   ´
                    Implementacion de MD5 en VHDL


  ´
¿Como se configuran las FPGAs?
                      ´
Lenguajes de descripcion hardware: VHDL

1    −− i m p o r t s t d l o g i c from t h e IEEE l i b r a r y
2    l i b r a r y IEEE ;
3    use IEEE . s t d l o g i c 1 1 6 4 . a l l ;
4
5    −− t h i s i s t h e e n t i t y
6    e n t i t y ANDGATE i s
7       port (
8            I1 : in s t d l o g i c ;
9            I2 : in s t d l o g i c ;
10          O : out s t d l o g i c ) ;
11   end e n t i t y ANDGATE;
12
13   a r c h i t e c t u r e RTL of ANDGATE i s
14   begin
15      O <= I 1 and I 2 ;
16   end a r c h i t e c t u r e RTL ;


              Alvaro Gamez alvaro.gamez@hazent.com          ´
                                                           Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
´             ´
                             Electronica digital basica                           ´
                                                          Algoritmo MD5: explicacion
                    Circuitos digitales reconfigurables                ´
                                                          Implementacion del algoritmo MD5 en VHDL
                                  ´
                   Implementacion de MD5 en VHDL          Conclusiones y resultados


                        ´
Algoritmo MD5 en pseudocodigo (I)
1    / / Process t h e message i n s u c c e s si v e 512− b i t chunks :
2    f o r each 512− b i t chunk of message
3          break chunk i n t o s i x t e e n 32− b i t l i t t l e −endian words w[ j ]
4          / / I n i t i a l i z e hash v a l u e f o r t h i s chunk :
5          v a r i n t a : = h0
6          v a r i n t b : = h1
7          v a r i n t c : = h2
8          v a r i n t d : = h3
9          / / Main loop :
10         main loop on next slide ( )
11         / / Add t h i s chunk ’ s hash to r e s u l t so f a r :
12         h0 : = h0 + a
13         h1 : = h1 + b
14         h2 : = h2 + c
15         h3 : = h3 + d
16   end f o r



             Alvaro Gamez alvaro.gamez@hazent.com          ´
                                                          Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
´             ´
                               Electronica digital basica                           ´
                                                            Algoritmo MD5: explicacion
                      Circuitos digitales reconfigurables                ´
                                                            Implementacion del algoritmo MD5 en VHDL
                                    ´
                     Implementacion de MD5 en VHDL          Conclusiones y resultados


                             ´
     Algoritmo MD5 en pseudocodigo (II)
1    f o r i from 0 to 63
2       i f 0 <= i <= 15 then                          A                            B          C          D
3         f : = ( b and c ) or ( ( not b ) and d )
4         g := i                                                                F
5      else i f 16 <= i <= 31
6         f : = ( d and b ) or ( ( not d ) and c )M i
7         g : = ( 5 ∗ i + 1 ) mod 16
                                                   Ki
8      else i f 32 <= i <= 47
9         f : = b xor c xor d                         <<<s
10        g : = ( 3 ∗ i + 5 ) mod 16
11     else i f 48 <= i <= 63
12        f : = c xor ( b or ( not d ) )
13        g : = ( 7 ∗ i ) mod 16
14     temp : = d
                                                       A                            B          C          D
15     d := c
16     c := b
17     b : = b + ( a + f + k [ i ] + w[ g ] ) <<< r [ i ]
18     a : = temp
19   end f o r
               Alvaro Gamez alvaro.gamez@hazent.com          ´
                                                            Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
´             ´
                        Electronica digital basica                                ´
                                                          Algoritmo MD5: explicacion
               Circuitos digitales reconfigurables                     ´
                                                          Implementacion del algoritmo MD5 en VHDL
                             ´
              Implementacion de MD5 en VHDL               Conclusiones y resultados


Algoritmo MD5 en VHDL (I)

                                                      1   e n t i t y md5mainloop i s
                                                      2   Port (
En VHDL es imperativo definir                          3    c l k : in s t d l o g i c ;
      ´              ´
un modulo en funcion de sus                           4     r s t : in s t d l o g i c ;
entradas y sus salidas.                               5

           ´
Nuestro modulo MD5 tiene                              6     s t a r t : in s t d l o g i c ;
                                                      7     w : i n d a t a s e t ( 0 to 1 5 ) ;
como entradas un reloj, una                           8
   ˜                    ˜
senal de reset, una senal de                          9    o : out s t d l o g i c v e c t o r
start y 512 bits de datos                            10            (127 downto 0 ) ;
distribuidos en 16 palabras de                       11    ov : out s t d l o g i c
                                                     12   );
32 bits cada una.
                                                     13   end md5mainloop ;




        Alvaro Gamez alvaro.gamez@hazent.com               ´
                                                          Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
´             ´
                                Electronica digital basica                           ´
                                                             Algoritmo MD5: explicacion
                       Circuitos digitales reconfigurables                ´
                                                             Implementacion del algoritmo MD5 en VHDL
                                     ´
                      Implementacion de MD5 en VHDL          Conclusiones y resultados


     Algoritmo MD5 en VHDL (II)
1    main loop : process ( i , a , b , c , d , w)
2    begin
3     i f ( i < 16) then                                                  A          B          C          D
4       f <= ( b and c ) or ( ( not b ) and d ) ;
5       g <= i mod 1 6 ;                                                         F
6     e l s i f ( i <32) then
                                                M
7       f <= ( d and b ) or ( ( not d ) and c ) ; i
8       g <= ( ( 5 ∗ i ) + 1 ) mod 1 6 ;        Ki
9     e l s i f ( i <48) then
10      f <= b xor c xor d ;                                            <<<s
11      g <= ( ( 3 ∗ i ) + 5 ) mod 1 6 ;
12    e l s i f ( i <64) then
13      f <= c xor ( b or ( not d ) ) ;
14      g <= ( 7∗ i ) mod 1 6 ;
15    end i f ;                                                           A          B          C          D
16   end process main loop ;
17                                                                          ´
                                                                      Este codigo describe y
18   x <= a+ f +K ( i mod 64) + w( g ) ;                                                 ´
                                                                sintetiza una combinacion de
19   y <= r o t a t e l e f t ( x , R( i mod 6 4 ) ) ;                                 ´
                                                                              puertas logicas.
                Alvaro Gamez alvaro.gamez@hazent.com          ´
                                                             Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
´             ´
                                Electronica digital basica                           ´
                                                             Algoritmo MD5: explicacion
                       Circuitos digitales reconfigurables                ´
                                                             Implementacion del algoritmo MD5 en VHDL
                                     ´
                      Implementacion de MD5 en VHDL          Conclusiones y resultados


     Algoritmo MD5 en VHDL (III)
1    a f t e r l o o p : process ( c l k , running , i , a , b , c , d , y )
2    begin
3        i f ( r i s i n g e d g e ( c l k ) and r u n n i n g = ’ 1 ’ ) then
4            i f ( i <64) then
5                 i <= ( i + 1 ) ;
6                d <= c ;
7                c <= b ;
8                b <= b + y ;
9                a <= d ;
10           else
11                i <= 0 ;
12               r u n n i n g <= ’ 0 ’ ;
13               h0 <= h0 + a ;
14               h1 <= h1 + b ;
15               h2 <= h2 + c ;
16               h3 <= h3 + d ;
17           end i f ;
18      end i f ;
19   end process a f t e r l o o p ;
                Alvaro Gamez alvaro.gamez@hazent.com          ´
                                                             Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
´             ´
                                Electronica digital basica                           ´
                                                             Algoritmo MD5: explicacion
                       Circuitos digitales reconfigurables                ´
                                                             Implementacion del algoritmo MD5 en VHDL
                                     ´
                      Implementacion de MD5 en VHDL          Conclusiones y resultados


     Algoritmo MD5 en VHDL (IV)
1    c o n t r o l : process ( c l k , r s t , a , b , c , d , i , y , w)
2    begin
3       i f ( r i s i n g e d g e ( c l k ) ) then
4           ov <= ’ 0 ’ ;
5            i f ( r s t = ’ 1 ’ ) then
6                i <= 0 ;
7                a <= wA; h0 <= wA;
8                b <= wB; h1 <= wB;
9                c <= wC; h2 <= wC;
10               d <= wD; h3 <= wD;
11               r u n n i n g <= ’ 0 ’ ;
12           e l s i f ( r u n n i n g = ’ 0 ’ ) then
13               i f ( s t a r t = ’ 1 ’ ) then
14                    i <= 0 ;
15                    r u n n i n g <= ’ 1 ’ ;
16               end i f ;
17          end i f ;
18      end i f ;
19   end process c o n t r o l ;
                Alvaro Gamez alvaro.gamez@hazent.com          ´
                                                             Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
´             ´
                        Electronica digital basica                           ´
                                                     Algoritmo MD5: explicacion
               Circuitos digitales reconfigurables                ´
                                                     Implementacion del algoritmo MD5 en VHDL
                             ´
              Implementacion de MD5 en VHDL          Conclusiones y resultados


 ´
Maxima frecuencia de funcionamiento (I)

      ´                                             ´
  Segun el dispositivo en el que implementemos el codigo VHDL
               ´
  se sintetizara un hardware u otro: algunas FPGAs tienen LUTs
         ´
  con mas entradas, DSPs con multiplicadores, sumadores, etc.

        ´                                          ´
  Ademas, dependiendo de la tecnolog´a de fabricacion el
                                      ı
  retardo de las puertas puede ser mayor o menor. Por tanto, la
     ´                                      ´
  maxima frecuencia de funcionamiento del codigo depende de
  la FPGA en la que se implemente.

             ´
  Nuestro modulo MD5 completo puede entregar el
  resultado de realizar el hash a un mensaje de menos de
  448 bits (56 bytes) en menos de 75 ciclos de reloj.


        Alvaro Gamez alvaro.gamez@hazent.com          ´
                                                     Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
´             ´
                        Electronica digital basica                           ´
                                                     Algoritmo MD5: explicacion
               Circuitos digitales reconfigurables                ´
                                                     Implementacion del algoritmo MD5 en VHDL
                             ´
              Implementacion de MD5 en VHDL          Conclusiones y resultados


 ´
Maxima frecuencia de funcionamiento (II)

                           ´
  Resultado de implementacion en diversas FPGAs:

   FPGA                                         ´
                                               Maxima frecuencia                Recursos
   XC3S100E (Spartan 3E)                                  60 MHz                  < 60 %
   XC6SLX9 (Spartan 6)                                   100MHz                   < 15 %
   XC5VSX95T (Virtex 5)                                 130 MHz                    < 1%

                ´
  Benchmark de calculo de hash MD5 con john en un Intel i7:

  Benchmarking: FreeBSD MD5 [32/64 X2]... DONE
  Raw:    14722 c/s real, 14722 c/s virtual



        Alvaro Gamez alvaro.gamez@hazent.com          ´
                                                     Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
´             ´
                        Electronica digital basica                           ´
                                                     Algoritmo MD5: explicacion
               Circuitos digitales reconfigurables                ´
                                                     Implementacion del algoritmo MD5 en VHDL
                             ´
              Implementacion de MD5 en VHDL          Conclusiones y resultados


Resultados (I)

                                              ´
   Suponiendo que aceptamos una ocupacion del 90 % de cada
            uno de los tres dispositivos mencionados
                                          ´
     (dejando libre el otro 10 % para la logica de control y de
                    ´
        comunicacion con el exterior: SPI, RS232, VGA...)
                                                      ´
  podr´amos implementar una cantidad variable de modulos MD5
      ı
     en paralelo, multiplicando efectivamente la capacidad de
                             procesado.

   FPGA               ´
                     Modulos              Hashes/segundo
   Spartan 3E              1                      800000
   Spartan 6               6                     8000000
   Virtex 5               90                  156000000
   John                   16                      240000

        Alvaro Gamez alvaro.gamez@hazent.com          ´
                                                     Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
´             ´
                        Electronica digital basica                           ´
                                                     Algoritmo MD5: explicacion
               Circuitos digitales reconfigurables                ´
                                                     Implementacion del algoritmo MD5 en VHDL
                             ´
              Implementacion de MD5 en VHDL          Conclusiones y resultados


Resultados (II)


  Puede mejorarse la velocidad insertando etapas de pipelining.
                     ´                  ´            ´
  Puede reducirse el area compartiendo logica entre modulos.

   FPGA               ´
                     Modulos              Hashes/segundo
   Spartan 3E              1                      800000
   Spartan 6               6                     8000000
   Virtex 5               90                  156000000
   John                   16                      240000

  ¿El precio de un I7? >1000 euros.
  ¿El precio de una Spartan 3E? <50 euros.



        Alvaro Gamez alvaro.gamez@hazent.com          ´
                                                     Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
´             ´
                       Electronica digital basica                           ´
                                                    Algoritmo MD5: explicacion
              Circuitos digitales reconfigurables                ´
                                                    Implementacion del algoritmo MD5 en VHDL
                            ´
             Implementacion de MD5 en VHDL          Conclusiones y resultados


Agradecimientos y referencias

        ´                  ´
     Imagenes y pseudocodigo prestados de
     http://en.wikipedia.org
     Xilinx (principal fabricante de FPGAs):
     http://www.xilinx.com/
     Intel 4004:
     http://www.intel.com/museum/archives/4004.htm
     Digital Integrated Circuits: A Design Perspective; J.M.
     Rabaey, Prentice Hall, 1996


                           Gracias a todos por venir.
                                 ¿Preguntas?


       Alvaro Gamez alvaro.gamez@hazent.com          ´
                                                    Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA

More Related Content

Viewers also liked

Variedades del melón - IMIDRA
Variedades del melón - IMIDRAVariedades del melón - IMIDRA
Variedades del melón - IMIDRABorja Sarasola
 
Presentació Estudi sobre els temps d'entrenament
Presentació Estudi sobre els temps d'entrenamentPresentació Estudi sobre els temps d'entrenament
Presentació Estudi sobre els temps d'entrenamentDani Raventos
 
Sebastián ramírez flórez negocio
Sebastián ramírez flórez negocioSebastián ramírez flórez negocio
Sebastián ramírez flórez negocioSebas Ramirez F
 
Lavida 120822210710-phpapp01
Lavida 120822210710-phpapp01Lavida 120822210710-phpapp01
Lavida 120822210710-phpapp01iwnyk
 
Saberes previos
Saberes previosSaberes previos
Saberes previosaioria30
 
Libro de indicadores plis illescas 2011
Libro de indicadores plis illescas  2011Libro de indicadores plis illescas  2011
Libro de indicadores plis illescas 2011Manuel Muñoz Herrera
 
Concurso de banderolas en winnetka 2012
Concurso de banderolas en winnetka 2012Concurso de banderolas en winnetka 2012
Concurso de banderolas en winnetka 2012Graciela Peralta E.
 
Diseño Mueble Cocina 6
Diseño Mueble Cocina 6Diseño Mueble Cocina 6
Diseño Mueble Cocina 6sienapulsor
 
Diseño Mueble Cocina 3
Diseño Mueble Cocina 3Diseño Mueble Cocina 3
Diseño Mueble Cocina 3sienapulsor
 
Metodologia para recolectar informacion a partir de grupos de enfoque
Metodologia para recolectar informacion a partir de grupos de enfoqueMetodologia para recolectar informacion a partir de grupos de enfoque
Metodologia para recolectar informacion a partir de grupos de enfoqueCECyTEQROO; SEYC, IPC.
 
Presentacion codigo 33
Presentacion codigo 33Presentacion codigo 33
Presentacion codigo 33Ramon Maraboli
 
Petróleo
PetróleoPetróleo
Petróleoiwnyk
 
Electrones
ElectronesElectrones
Electronesiwnyk
 
Ventajas y desventajas de los procesadores de texto
Ventajas y desventajas de los procesadores de textoVentajas y desventajas de los procesadores de texto
Ventajas y desventajas de los procesadores de textoeliasdiego
 
Colegio nacional nicolás esguerra
Colegio nacional nicolás  esguerraColegio nacional nicolás  esguerra
Colegio nacional nicolás esguerraiwnyk
 
Scratch word
Scratch wordScratch word
Scratch wordiwnyk
 
T administracion
T administracionT administracion
T administracionRaúl Ramos
 
Crear guias de dibujo. cuadriculas1
Crear guias de dibujo. cuadriculas1Crear guias de dibujo. cuadriculas1
Crear guias de dibujo. cuadriculas1Laura Viviana
 

Viewers also liked (20)

Variedades del melón - IMIDRA
Variedades del melón - IMIDRAVariedades del melón - IMIDRA
Variedades del melón - IMIDRA
 
Presentació Estudi sobre els temps d'entrenament
Presentació Estudi sobre els temps d'entrenamentPresentació Estudi sobre els temps d'entrenament
Presentació Estudi sobre els temps d'entrenament
 
Sebastián ramírez flórez negocio
Sebastián ramírez flórez negocioSebastián ramírez flórez negocio
Sebastián ramírez flórez negocio
 
Lavida 120822210710-phpapp01
Lavida 120822210710-phpapp01Lavida 120822210710-phpapp01
Lavida 120822210710-phpapp01
 
Saberes previos
Saberes previosSaberes previos
Saberes previos
 
Libro de indicadores plis illescas 2011
Libro de indicadores plis illescas  2011Libro de indicadores plis illescas  2011
Libro de indicadores plis illescas 2011
 
Concurso de banderolas en winnetka 2012
Concurso de banderolas en winnetka 2012Concurso de banderolas en winnetka 2012
Concurso de banderolas en winnetka 2012
 
Google doc's
Google doc'sGoogle doc's
Google doc's
 
Diseño Mueble Cocina 6
Diseño Mueble Cocina 6Diseño Mueble Cocina 6
Diseño Mueble Cocina 6
 
Diseño Mueble Cocina 3
Diseño Mueble Cocina 3Diseño Mueble Cocina 3
Diseño Mueble Cocina 3
 
Metodologia para recolectar informacion a partir de grupos de enfoque
Metodologia para recolectar informacion a partir de grupos de enfoqueMetodologia para recolectar informacion a partir de grupos de enfoque
Metodologia para recolectar informacion a partir de grupos de enfoque
 
Presentacion codigo 33
Presentacion codigo 33Presentacion codigo 33
Presentacion codigo 33
 
Digitopuntura y reflexologia
Digitopuntura y reflexologiaDigitopuntura y reflexologia
Digitopuntura y reflexologia
 
Petróleo
PetróleoPetróleo
Petróleo
 
Electrones
ElectronesElectrones
Electrones
 
Ventajas y desventajas de los procesadores de texto
Ventajas y desventajas de los procesadores de textoVentajas y desventajas de los procesadores de texto
Ventajas y desventajas de los procesadores de texto
 
Colegio nacional nicolás esguerra
Colegio nacional nicolás  esguerraColegio nacional nicolás  esguerra
Colegio nacional nicolás esguerra
 
Scratch word
Scratch wordScratch word
Scratch word
 
T administracion
T administracionT administracion
T administracion
 
Crear guias de dibujo. cuadriculas1
Crear guias de dibujo. cuadriculas1Crear guias de dibujo. cuadriculas1
Crear guias de dibujo. cuadriculas1
 

Técnicas ataque por fuerza bruta contra md5 mediante FPGA

  • 1. ´ ´ Electronica digital basica Circuitos digitales reconfigurables ´ Implementacion de MD5 en VHDL ´ Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA Alvaro Gamez alvaro.gamez@hazent.com 4 de febrero de 2012 Alvaro Gamez alvaro.gamez@hazent.com ´ Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
  • 2. ´ ´ Electronica digital basica Circuitos digitales reconfigurables ´ Implementacion de MD5 en VHDL Contenidos 1 ´ ´ Electronica digital basica Circuitos elementales Circuitos complejos: procesadores 2 Circuitos digitales reconfigurables FPGAs VHDL 3 ´ Implementacion de MD5 en VHDL ´ Algoritmo MD5: explicacion ´ Implementacion del algoritmo MD5 en VHDL Conclusiones y resultados Alvaro Gamez alvaro.gamez@hazent.com ´ Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
  • 3. ´ ´ Electronica digital basica Circuitos elementales Circuitos digitales reconfigurables Circuitos complejos: procesadores ´ Implementacion de MD5 en VHDL ´ ¿Que hay dentro de un circuito integrado? (I) ´ Transistores y puertas logicas ´ ´ Una puerta logica esta formada por varios transistores MOS complementarios (un tipo P y un tipo N). ´ Puede tener una o mas entradas, pero ´ solo tiene una salida. Esta otra puerta, representada por su s´mbolo, es una puerta ı AND. A B A ·B 0 0 0 0 1 0 1 0 0 1 1 1 Alvaro Gamez alvaro.gamez@hazent.com ´ Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
  • 4. ´ ´ Electronica digital basica Circuitos elementales Circuitos digitales reconfigurables Circuitos complejos: procesadores ´ Implementacion de MD5 en VHDL ´ ¿Que hay dentro de un circuito integrado? (II) Circuitos combinacionales y registros S D Q A B S Cin Q R Cout Registro tipo D: ´ unidad basica de almacenamiento Sumador completo (con acarreo): Su salida depende S = A + B + Cin . Su salida depende ´ unicamente de sus ´ unicamente de sus entradas. entradas, pero solo cambia con un ciclo de reloj. Alvaro Gamez alvaro.gamez@hazent.com ´ Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
  • 5. ´ ´ Electronica digital basica Circuitos elementales Circuitos digitales reconfigurables Circuitos complejos: procesadores ´ Implementacion de MD5 en VHDL ´ ¿Que hay dentro de un circuito integrado? (II) ´ Maquinas de estados Contador de 4 bits: desde “0000” (0) hasta “1111” (15). Su salida depende de sus entradas y de su estado actual, y su ´ estado cambia unicamente con un ciclo de reloj. Alvaro Gamez alvaro.gamez@hazent.com ´ Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
  • 6. ´ ´ Electronica digital basica Circuitos elementales Circuitos digitales reconfigurables Circuitos complejos: procesadores ´ Implementacion de MD5 en VHDL ´ ¿Que hay dentro de un procesador? Intel 4004 Architecture D0-D3 bidirectional Data Bus Data Bus Buffer 4 Bit internal Data Bus Temp. Accumulator Instruction Register Register Register Multiplexer 0 1 Flag Stack 2 3 Flip Flops Multiplexer Index Register Select Instruction Program Counter 4 5 Stack Pointer Decoder and Machine Level No. 1 6 7 Cycle Level No. 2 Encoding ALU 8 9 Level No. 3 10 11 Address Stack 12 13 Decimal 14 15 Adjust Scratch Pad Timing and Control ROM Control RAM Control Test Sync Clocks Reset Alvaro Gamez alvaro.gamez@hazent.com ´ Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
  • 7. ´ ´ Electronica digital basica FPGAs Circuitos digitales reconfigurables VHDL ´ Implementacion de MD5 en VHDL ´ ¿Que hay dentro de una FPGA? En el interior de una FPGA hay una enorme matriz de circuitos interconectados entre s´. Cada una de las celdas de esta matriz ı ´ (en el orden de decenas de miles) esta formada por diversos circuitos digitales como los que hemos visto anteriormente. Alvaro Gamez alvaro.gamez@hazent.com ´ Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
  • 8. ´ ´ Electronica digital basica FPGAs Circuitos digitales reconfigurables VHDL ´ Implementacion de MD5 en VHDL ´ ¿Como se configuran las FPGAs? ´ Lenguajes de descripcion hardware: VHDL ´ El codigo VHDL... 1 DFF : process (RST, CLK) 2 begin 3 i f RST = ’ 1 ’ then 4 Q <= ’ 0 ’ ; ... no es un programa. 5 e l s i f r i s i n g e d g e (CLK) then ... no se ejecuta. 6 Q <= D; 7 Q <= not D; 8 end i f ; 9 end process DFF ; ´ El codigo VHDL... define S D Q ´ que hardware utilizar y ´ como interconectarlo. Q R Alvaro Gamez alvaro.gamez@hazent.com ´ Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
  • 9. ´ ´ Electronica digital basica FPGAs Circuitos digitales reconfigurables VHDL ´ Implementacion de MD5 en VHDL ´ ¿Como se configuran las FPGAs? ´ Lenguajes de descripcion hardware: VHDL 1 −− i m p o r t s t d l o g i c from t h e IEEE l i b r a r y 2 l i b r a r y IEEE ; 3 use IEEE . s t d l o g i c 1 1 6 4 . a l l ; 4 5 −− t h i s i s t h e e n t i t y 6 e n t i t y ANDGATE i s 7 port ( 8 I1 : in s t d l o g i c ; 9 I2 : in s t d l o g i c ; 10 O : out s t d l o g i c ) ; 11 end e n t i t y ANDGATE; 12 13 a r c h i t e c t u r e RTL of ANDGATE i s 14 begin 15 O <= I 1 and I 2 ; 16 end a r c h i t e c t u r e RTL ; Alvaro Gamez alvaro.gamez@hazent.com ´ Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
  • 10. ´ ´ Electronica digital basica ´ Algoritmo MD5: explicacion Circuitos digitales reconfigurables ´ Implementacion del algoritmo MD5 en VHDL ´ Implementacion de MD5 en VHDL Conclusiones y resultados ´ Algoritmo MD5 en pseudocodigo (I) 1 / / Process t h e message i n s u c c e s si v e 512− b i t chunks : 2 f o r each 512− b i t chunk of message 3 break chunk i n t o s i x t e e n 32− b i t l i t t l e −endian words w[ j ] 4 / / I n i t i a l i z e hash v a l u e f o r t h i s chunk : 5 v a r i n t a : = h0 6 v a r i n t b : = h1 7 v a r i n t c : = h2 8 v a r i n t d : = h3 9 / / Main loop : 10 main loop on next slide ( ) 11 / / Add t h i s chunk ’ s hash to r e s u l t so f a r : 12 h0 : = h0 + a 13 h1 : = h1 + b 14 h2 : = h2 + c 15 h3 : = h3 + d 16 end f o r Alvaro Gamez alvaro.gamez@hazent.com ´ Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
  • 11. ´ ´ Electronica digital basica ´ Algoritmo MD5: explicacion Circuitos digitales reconfigurables ´ Implementacion del algoritmo MD5 en VHDL ´ Implementacion de MD5 en VHDL Conclusiones y resultados ´ Algoritmo MD5 en pseudocodigo (II) 1 f o r i from 0 to 63 2 i f 0 <= i <= 15 then A B C D 3 f : = ( b and c ) or ( ( not b ) and d ) 4 g := i F 5 else i f 16 <= i <= 31 6 f : = ( d and b ) or ( ( not d ) and c )M i 7 g : = ( 5 ∗ i + 1 ) mod 16 Ki 8 else i f 32 <= i <= 47 9 f : = b xor c xor d <<<s 10 g : = ( 3 ∗ i + 5 ) mod 16 11 else i f 48 <= i <= 63 12 f : = c xor ( b or ( not d ) ) 13 g : = ( 7 ∗ i ) mod 16 14 temp : = d A B C D 15 d := c 16 c := b 17 b : = b + ( a + f + k [ i ] + w[ g ] ) <<< r [ i ] 18 a : = temp 19 end f o r Alvaro Gamez alvaro.gamez@hazent.com ´ Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
  • 12. ´ ´ Electronica digital basica ´ Algoritmo MD5: explicacion Circuitos digitales reconfigurables ´ Implementacion del algoritmo MD5 en VHDL ´ Implementacion de MD5 en VHDL Conclusiones y resultados Algoritmo MD5 en VHDL (I) 1 e n t i t y md5mainloop i s 2 Port ( En VHDL es imperativo definir 3 c l k : in s t d l o g i c ; ´ ´ un modulo en funcion de sus 4 r s t : in s t d l o g i c ; entradas y sus salidas. 5 ´ Nuestro modulo MD5 tiene 6 s t a r t : in s t d l o g i c ; 7 w : i n d a t a s e t ( 0 to 1 5 ) ; como entradas un reloj, una 8 ˜ ˜ senal de reset, una senal de 9 o : out s t d l o g i c v e c t o r start y 512 bits de datos 10 (127 downto 0 ) ; distribuidos en 16 palabras de 11 ov : out s t d l o g i c 12 ); 32 bits cada una. 13 end md5mainloop ; Alvaro Gamez alvaro.gamez@hazent.com ´ Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
  • 13. ´ ´ Electronica digital basica ´ Algoritmo MD5: explicacion Circuitos digitales reconfigurables ´ Implementacion del algoritmo MD5 en VHDL ´ Implementacion de MD5 en VHDL Conclusiones y resultados Algoritmo MD5 en VHDL (II) 1 main loop : process ( i , a , b , c , d , w) 2 begin 3 i f ( i < 16) then A B C D 4 f <= ( b and c ) or ( ( not b ) and d ) ; 5 g <= i mod 1 6 ; F 6 e l s i f ( i <32) then M 7 f <= ( d and b ) or ( ( not d ) and c ) ; i 8 g <= ( ( 5 ∗ i ) + 1 ) mod 1 6 ; Ki 9 e l s i f ( i <48) then 10 f <= b xor c xor d ; <<<s 11 g <= ( ( 3 ∗ i ) + 5 ) mod 1 6 ; 12 e l s i f ( i <64) then 13 f <= c xor ( b or ( not d ) ) ; 14 g <= ( 7∗ i ) mod 1 6 ; 15 end i f ; A B C D 16 end process main loop ; 17 ´ Este codigo describe y 18 x <= a+ f +K ( i mod 64) + w( g ) ; ´ sintetiza una combinacion de 19 y <= r o t a t e l e f t ( x , R( i mod 6 4 ) ) ; ´ puertas logicas. Alvaro Gamez alvaro.gamez@hazent.com ´ Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
  • 14. ´ ´ Electronica digital basica ´ Algoritmo MD5: explicacion Circuitos digitales reconfigurables ´ Implementacion del algoritmo MD5 en VHDL ´ Implementacion de MD5 en VHDL Conclusiones y resultados Algoritmo MD5 en VHDL (III) 1 a f t e r l o o p : process ( c l k , running , i , a , b , c , d , y ) 2 begin 3 i f ( r i s i n g e d g e ( c l k ) and r u n n i n g = ’ 1 ’ ) then 4 i f ( i <64) then 5 i <= ( i + 1 ) ; 6 d <= c ; 7 c <= b ; 8 b <= b + y ; 9 a <= d ; 10 else 11 i <= 0 ; 12 r u n n i n g <= ’ 0 ’ ; 13 h0 <= h0 + a ; 14 h1 <= h1 + b ; 15 h2 <= h2 + c ; 16 h3 <= h3 + d ; 17 end i f ; 18 end i f ; 19 end process a f t e r l o o p ; Alvaro Gamez alvaro.gamez@hazent.com ´ Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
  • 15. ´ ´ Electronica digital basica ´ Algoritmo MD5: explicacion Circuitos digitales reconfigurables ´ Implementacion del algoritmo MD5 en VHDL ´ Implementacion de MD5 en VHDL Conclusiones y resultados Algoritmo MD5 en VHDL (IV) 1 c o n t r o l : process ( c l k , r s t , a , b , c , d , i , y , w) 2 begin 3 i f ( r i s i n g e d g e ( c l k ) ) then 4 ov <= ’ 0 ’ ; 5 i f ( r s t = ’ 1 ’ ) then 6 i <= 0 ; 7 a <= wA; h0 <= wA; 8 b <= wB; h1 <= wB; 9 c <= wC; h2 <= wC; 10 d <= wD; h3 <= wD; 11 r u n n i n g <= ’ 0 ’ ; 12 e l s i f ( r u n n i n g = ’ 0 ’ ) then 13 i f ( s t a r t = ’ 1 ’ ) then 14 i <= 0 ; 15 r u n n i n g <= ’ 1 ’ ; 16 end i f ; 17 end i f ; 18 end i f ; 19 end process c o n t r o l ; Alvaro Gamez alvaro.gamez@hazent.com ´ Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
  • 16. ´ ´ Electronica digital basica ´ Algoritmo MD5: explicacion Circuitos digitales reconfigurables ´ Implementacion del algoritmo MD5 en VHDL ´ Implementacion de MD5 en VHDL Conclusiones y resultados ´ Maxima frecuencia de funcionamiento (I) ´ ´ Segun el dispositivo en el que implementemos el codigo VHDL ´ se sintetizara un hardware u otro: algunas FPGAs tienen LUTs ´ con mas entradas, DSPs con multiplicadores, sumadores, etc. ´ ´ Ademas, dependiendo de la tecnolog´a de fabricacion el ı retardo de las puertas puede ser mayor o menor. Por tanto, la ´ ´ maxima frecuencia de funcionamiento del codigo depende de la FPGA en la que se implemente. ´ Nuestro modulo MD5 completo puede entregar el resultado de realizar el hash a un mensaje de menos de 448 bits (56 bytes) en menos de 75 ciclos de reloj. Alvaro Gamez alvaro.gamez@hazent.com ´ Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
  • 17. ´ ´ Electronica digital basica ´ Algoritmo MD5: explicacion Circuitos digitales reconfigurables ´ Implementacion del algoritmo MD5 en VHDL ´ Implementacion de MD5 en VHDL Conclusiones y resultados ´ Maxima frecuencia de funcionamiento (II) ´ Resultado de implementacion en diversas FPGAs: FPGA ´ Maxima frecuencia Recursos XC3S100E (Spartan 3E) 60 MHz < 60 % XC6SLX9 (Spartan 6) 100MHz < 15 % XC5VSX95T (Virtex 5) 130 MHz < 1% ´ Benchmark de calculo de hash MD5 con john en un Intel i7: Benchmarking: FreeBSD MD5 [32/64 X2]... DONE Raw: 14722 c/s real, 14722 c/s virtual Alvaro Gamez alvaro.gamez@hazent.com ´ Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
  • 18. ´ ´ Electronica digital basica ´ Algoritmo MD5: explicacion Circuitos digitales reconfigurables ´ Implementacion del algoritmo MD5 en VHDL ´ Implementacion de MD5 en VHDL Conclusiones y resultados Resultados (I) ´ Suponiendo que aceptamos una ocupacion del 90 % de cada uno de los tres dispositivos mencionados ´ (dejando libre el otro 10 % para la logica de control y de ´ comunicacion con el exterior: SPI, RS232, VGA...) ´ podr´amos implementar una cantidad variable de modulos MD5 ı en paralelo, multiplicando efectivamente la capacidad de procesado. FPGA ´ Modulos Hashes/segundo Spartan 3E 1 800000 Spartan 6 6 8000000 Virtex 5 90 156000000 John 16 240000 Alvaro Gamez alvaro.gamez@hazent.com ´ Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
  • 19. ´ ´ Electronica digital basica ´ Algoritmo MD5: explicacion Circuitos digitales reconfigurables ´ Implementacion del algoritmo MD5 en VHDL ´ Implementacion de MD5 en VHDL Conclusiones y resultados Resultados (II) Puede mejorarse la velocidad insertando etapas de pipelining. ´ ´ ´ Puede reducirse el area compartiendo logica entre modulos. FPGA ´ Modulos Hashes/segundo Spartan 3E 1 800000 Spartan 6 6 8000000 Virtex 5 90 156000000 John 16 240000 ¿El precio de un I7? >1000 euros. ¿El precio de una Spartan 3E? <50 euros. Alvaro Gamez alvaro.gamez@hazent.com ´ Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
  • 20. ´ ´ Electronica digital basica ´ Algoritmo MD5: explicacion Circuitos digitales reconfigurables ´ Implementacion del algoritmo MD5 en VHDL ´ Implementacion de MD5 en VHDL Conclusiones y resultados Agradecimientos y referencias ´ ´ Imagenes y pseudocodigo prestados de http://en.wikipedia.org Xilinx (principal fabricante de FPGAs): http://www.xilinx.com/ Intel 4004: http://www.intel.com/museum/archives/4004.htm Digital Integrated Circuits: A Design Perspective; J.M. Rabaey, Prentice Hall, 1996 Gracias a todos por venir. ¿Preguntas? Alvaro Gamez alvaro.gamez@hazent.com ´ Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA