´             ´                  Electronica digital basica         Circuitos digitales reconfigurables                    ...
´             ´                         Electronica digital basica                Circuitos digitales reconfigurables      ...
´             ´                            Electronica digital basica                                                     ...
´             ´                            Electronica digital basica                                                     ...
´             ´                          Electronica digital basica                                                       ...
´             ´                                      Electronica digital basica                                           ...
´             ´                        Electronica digital basica                                                     FPGA...
´             ´                           Electronica digital basica                                                      ...
´             ´                              Electronica digital basica                                                   ...
´             ´                             Electronica digital basica                           ´                        ...
´             ´                               Electronica digital basica                           ´                      ...
´             ´                        Electronica digital basica                                ´                        ...
´             ´                                Electronica digital basica                           ´                     ...
´             ´                                Electronica digital basica                           ´                     ...
´             ´                                Electronica digital basica                           ´                     ...
´             ´                        Electronica digital basica                           ´                             ...
´             ´                        Electronica digital basica                           ´                             ...
´             ´                        Electronica digital basica                           ´                             ...
´             ´                        Electronica digital basica                           ´                             ...
´             ´                       Electronica digital basica                           ´                              ...
Upcoming SlideShare
Loading in …5
×

Técnicas ataque por fuerza bruta contra md5 mediante FPGA

36,322 views

Published on

Si hacemos cuidadosamente el diseño, de reducido tamaño, con las etapas de pipeline necesarias, es posible construir un módulo hardware que obtenga hashes MD5 a una velocidad superior a la de un ordenador convencional, incluso aunque en vez de funcionar a 3GHz lo haga tan solo a 150MHz.

1 Comment
0 Likes
Statistics
Notes
  • MD5 es uno de los algoritmos de reducción criptográficos diseñados por el profesor Ronald Rivest La codificación del MD5 de 128 bits es representada típicamente como un número de 32 dígitos hexadecimal. El siguiente código de 28 bytes ASCII será tratado con MD5 y veremos su correspondiente hash de salida: MD5("Generando un MD5 de un texto") = 5df9f63916ebf8528697b629022993e8 Un pequeño cambio en el texto (cambiar '5' por 'S') produce una salida completamente diferente. MD5("Generando un MDS de un texto") = e14a3ff5b5e67ede599cac94358e1028 Otro ejemplo serí­a la codificación de un campo vací­o: MD5("") = d41d8cd98f00b204e9800998ecf8427e permitiendo que este codigo sea fas dificil de reconocer o desencriptar
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Views
Total views
36,322
On SlideShare
0
From Embeds
0
Number of Embeds
65
Actions
Shares
0
Downloads
17
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Técnicas ataque por fuerza bruta contra md5 mediante FPGA

  1. 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. 2. ´ ´ Electronica digital basica Circuitos digitales reconfigurables ´ Implementacion de MD5 en VHDLContenidos 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. 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. 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. 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. 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. 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. 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. 9. ´ ´ Electronica digital basica FPGAs Circuitos digitales reconfigurables VHDL ´ Implementacion de MD5 en VHDL ´¿Como se configuran las FPGAs? ´Lenguajes de descripcion hardware: VHDL1 −− 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 y2 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 ;45 −− t h i s i s t h e e n t i t y6 e n t i t y ANDGATE i s7 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;1213 a r c h i t e c t u r e RTL of ANDGATE i s14 begin15 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. 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 message3 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 : = h06 v a r i n t b : = h17 v a r i n t c : = h28 v a r i n t d : = h39 / / 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 + a13 h1 : = h1 + b14 h2 : = h2 + c15 h3 : = h3 + d16 end f o r Alvaro Gamez alvaro.gamez@hazent.com ´ Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
  11. 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 632 i f 0 <= i <= 15 then A B C D3 f : = ( b and c ) or ( ( not b ) and d )4 g := i F5 else i f 16 <= i <= 316 f : = ( d and b ) or ( ( not d ) and c )M i7 g : = ( 5 ∗ i + 1 ) mod 16 Ki8 else i f 32 <= i <= 479 f : = b xor c xor d <<<s10 g : = ( 3 ∗ i + 5 ) mod 1611 else i f 48 <= i <= 6312 f : = c xor ( b or ( not d ) )13 g : = ( 7 ∗ i ) mod 1614 temp : = d A B C D15 d := c16 c := b17 b : = b + ( a + f + k [ i ] + w[ g ] ) <<< r [ i ]18 a : = temp19 end f o r Alvaro Gamez alvaro.gamez@hazent.com ´ Tecnicas de ataque por fuerza bruta contra MD5 mediante FPGA
  12. 12. ´ ´ Electronica digital basica ´ Algoritmo MD5: explicacion Circuitos digitales reconfigurables ´ Implementacion del algoritmo MD5 en VHDL ´ Implementacion de MD5 en VHDL Conclusiones y resultadosAlgoritmo 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 rstart 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. 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 begin3 i f ( i < 16) then A B C D4 f <= ( b and c ) or ( ( not b ) and d ) ;5 g <= i mod 1 6 ; F6 e l s i f ( i <32) then M7 f <= ( d and b ) or ( ( not d ) and c ) ; i8 g <= ( ( 5 ∗ i ) + 1 ) mod 1 6 ; Ki9 e l s i f ( i <48) then10 f <= b xor c xor d ; <<<s11 g <= ( ( 3 ∗ i ) + 5 ) mod 1 6 ;12 e l s i f ( i <64) then13 f <= c xor ( b or ( not d ) ) ;14 g <= ( 7∗ i ) mod 1 6 ;15 end i f ; A B C D16 end process main loop ;17 ´ Este codigo describe y18 x <= a+ f +K ( i mod 64) + w( g ) ; ´ sintetiza una combinacion de19 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. 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 begin3 i f ( r i s i n g e d g e ( c l k ) and r u n n i n g = ’ 1 ’ ) then4 i f ( i <64) then5 i <= ( i + 1 ) ;6 d <= c ;7 c <= b ;8 b <= b + y ;9 a <= d ;10 else11 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. 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 begin3 i f ( r i s i n g e d g e ( c l k ) ) then4 ov <= ’ 0 ’ ;5 i f ( r s t = ’ 1 ’ ) then6 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 ’ ) then13 i f ( s t a r t = ’ 1 ’ ) then14 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. 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. 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. 18. ´ ´ Electronica digital basica ´ Algoritmo MD5: explicacion Circuitos digitales reconfigurables ´ Implementacion del algoritmo MD5 en VHDL ´ Implementacion de MD5 en VHDL Conclusiones y resultadosResultados (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. 19. ´ ´ Electronica digital basica ´ Algoritmo MD5: explicacion Circuitos digitales reconfigurables ´ Implementacion del algoritmo MD5 en VHDL ´ Implementacion de MD5 en VHDL Conclusiones y resultadosResultados (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. 20. ´ ´ Electronica digital basica ´ Algoritmo MD5: explicacion Circuitos digitales reconfigurables ´ Implementacion del algoritmo MD5 en VHDL ´ Implementacion de MD5 en VHDL Conclusiones y resultadosAgradecimientos 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

×