Implémentation MD5 pour microcontrôleur

11

Quelqu'un at-il des exemples de l' algorithme MD5 pour un microcontrôleur (de préférence un 8 bits)? Notre projet va utiliser un appareil Microchip série PIC18.

J. Polfer
la source

Réponses:

11

Si vous recherchez une implémentation C, la pile Microchip TCP / IP a une implémentation de MD5 dans le fichier Hashes.c.

mjh2007
la source
C'est exactement ce dont j'avais besoin.
J.Polfer
9

Voici l'implémentation MD5 de l'EtherNut (basé sur AVR)

Toby Jaffey
la source
4

Je m'en tiendrai à une implémentation réputée et connue de MD5, et je resterais à l'écart des bibliothèques que vous trouverez auprès de fournisseurs tiers. Le RFC 1321 original qui décrivait MD5 a un exemple d'implémentation C.

Rappel: les faiblesses connues de MD5 sont les attaques par collision et non les attaques de préimage , il convient donc à certaines applications cryptographiques mais pas à d'autres. Si vous ne connaissez pas la différence, vous ne devriez pas l'utiliser, mais ne la jetez pas complètement. Voir http://www.vpnc.org/hash.html .

Jason S
la source
1
Pour la cryptographie, je m'éloignerais complètement de MD5 ...
Toby Jaffey
1
@Joby: appréciez la pensée, mais MD5 a des aspects qui conviennent parfaitement à la cryptographie. Il suffit de connaître ses forces et ses faiblesses.
Jason S
+1 pour la liaison au code source C dans le RFC d'origine. Même si j'irais probablement avec le code source de Microchip, les mêmes personnes qui ont créé la puce sur laquelle cela va fonctionner.
davidcary
3

Vous pouvez trouver une bonne description et un pseudocode pour l'algorithme MD5 wikipedia à http://en.wikipedia.org/wiki/MD5

Vous pouvez également envisager de publier cette question sur stackoverflow car elle est davantage orientée vers les questions de programmation.

semaj
la source
3

à partir de la page wikipedia sur MD5 :

... il a été démontré que MD5 n'est pas résistant aux collisions en tant que tel, MD5 ne convient pas aux applications telles que les certificats SSL ou les signatures numériques qui s'appuient sur cette propriété.

et des chercheurs SSL sur la même page:

Nous espérons également que l'utilisation de MD5 dans d'autres applications sera également reconsidérée.

Je comprends que vous ne voulez probablement pas entendre cela, mais avez-vous vraiment besoin de MD5? Il ne devrait pas être utilisé à des fins cryptographiques car il est trop peu sûr (et il y a des cargaisons de tables arc-en-ciel disponibles). Si vous cherchez quelque chose pour simplement valider les données, regardez dans CRC (code ici ) qui est moins cher en termes de calcul. Si vous êtes l' utilisez à des fins cryptographiques bien, alors je suggère de passer à SHA ? Le seul problème est que la plupart des algorithmes sécurisés cryptographiquement ne fonctionnent pas particulièrement bien sur les microcontrôleurs. Je sais qu'il peut sembler que le MD5 est "assez bon", mais la manière d'ingénierie est de faire preuve de prudence.

Jeremy
la source
1
N'excluez pas complètement MD5: votre déclaration "Il ne devrait pas être utilisé à des fins cryptographiques car il est trop peu sûr" est trop généralisée.
Jason S
1
N'utilisez pas non plus le fait qu'un algorithme de hachage ait ou non des tables arc-en-ciel pour l'utiliser ou non. Si SHA n'a pas beaucoup de tables arc-en-ciel maintenant, ce sera le cas. Ajoutez un "sel" secret à un message pour contourner ce problème.
Jason S