Implementación MD5 para microcontrolador

11

¿Alguien tiene algún ejemplo del algoritmo MD5 para un microcontrolador (preferiblemente uno de 8 bits)? Nuestro proyecto utilizará un dispositivo de la serie Microchip PIC18.

J. Polfer
fuente

Respuestas:

11

Si está buscando una implementación en C, la pila Microchip TCP / IP tiene una implementación de MD5 en el archivo Hashes.c.

mjh2007
fuente
Esto es exactamente lo que necesitaba.
J. Polfer
9

Aquí está la implementación MD5 de EtherNut (basado en AVR)

Toby Jaffey
fuente
4

Me quedaría con una conocida implementación de MD5 y me mantendría alejado de las bibliotecas que encuentre de proveedores externos. El RFC 1321 original que describe MD5 tiene una implementación de muestra C.

Recordatorio: las debilidades conocidas de MD5 son los ataques de colisión y no los ataques de preimagen , por lo que es adecuado para algunas aplicaciones criptográficas pero no para otras. Si no conoce la diferencia, no debería usarla, pero no la descarte por completo. Ver http://www.vpnc.org/hash.html .

Jason S
fuente
1
Para la criptografía, me mantendría alejado de MD5 por completo ...
Toby Jaffey
1
@Joby: aprecio el pensamiento, pero MD5 tiene aspectos que están bien para la criptografía. Solo tienes que conocer sus fortalezas y debilidades.
Jason S
+1 para vincular al código fuente C en el RFC original. Aunque probablemente usaría el código fuente de Microchip, las mismas personas que hicieron el chip con el que se ejecutará.
davidcary
3

Puede encontrar una buena descripción y algunos pseudocódigos para la wikipedia del algoritmo MD5 en http://en.wikipedia.org/wiki/MD5

También puede considerar publicar esta pregunta en stackoverflow ya que está más orientada a las preguntas de programación.

semaj
fuente
3

de la página de wikipedia en MD5 :

... se ha demostrado que MD5 no es resistente a colisiones como tal, MD5 no es adecuado para aplicaciones como certificados SSL o firmas digitales que dependen de esta propiedad.

y de los investigadores de SSL en la misma página:

También esperamos que también se reconsidere el uso de MD5 en otras aplicaciones.

Entiendo que probablemente no quieras escuchar esto, pero ¿realmente necesitas MD5? No debe usarse con fines criptográficos, ya que es demasiado inseguro (y hay muchas cargas de tablas de arco iris disponibles). Si está buscando algo para validar los datos, busque CRC (código aquí ) que es computacionalmente más barato. Sin embargo, si lo está utilizando con fines criptográficos, ¿puedo sugerirle que se mude a SHA ? El único problema es que la mayoría de los algoritmos criptográficamente seguros no funcionan particularmente bien en microcontroladores. Sé que puede parecer que MD5 es "lo suficientemente bueno", pero la forma de ingeniería es errar por precaución.

Jeremy
fuente
1
No descarte completamente MD5: su declaración de "No debe usarse con fines criptográficos porque es demasiado insegura" está demasiado generalizada.
Jason S
1
Tampoco use el hecho de que un algoritmo hash tiene o no tiene tablas de arco iris como una consideración para usarlo o no. Si SHA no tiene muchas tablas de arcoíris ahora, las tendrá. Agregue una "sal" secreta a un mensaje para solucionar ese problema.
Jason S