MD5-Implementierung für Mikrocontroller

11

Hat jemand Beispiele für den MD5-Algorithmus für einen Mikrocontroller (vorzugsweise einen 8-Bit- Algorithmus )? In unserem Projekt wird ein Gerät der Microchip PIC18-Serie verwendet.

J. Polfer
quelle

Antworten:

11

Wenn Sie nach einer C-Implementierung suchen, enthält der Microchip TCP / IP-Stack eine Implementierung von MD5 in der Datei Hashes.c.

mjh2007
quelle
Genau das brauchte ich.
J. Polfer
9

Hier ist die MD5-Implementierung von EtherNut (AVR-basiert)

Toby Jaffey
quelle
4

Ich würde mich an eine bekannte seriöse Implementierung von MD5 halten und mich von Bibliotheken fernhalten, die Sie von Drittanbietern finden. Der ursprüngliche RFC 1321, der MD5 beschrieb, hat eine Beispiel-C-Implementierung.

Erinnerung: Die bekannten Schwachstellen für MD5 sind Kollisionsangriffe und keine Preimage-Angriffe. Daher ist es für einige kryptografische Anwendungen geeignet, für andere jedoch nicht. Wenn Sie den Unterschied nicht kennen, sollten Sie ihn nicht verwenden, aber nicht ganz wegwerfen. Siehe http://www.vpnc.org/hash.html .

Jason S.
quelle
1
Für die Kryptographie würde ich mich von MD5 fernhalten ...
Toby Jaffey
1
@Joby: Schätzen Sie den Gedanken, aber MD5 hat Aspekte davon, die für die Kryptographie in Ordnung sind. Man muss nur seine Stärken und Schwächen kennen.
Jason S
+1 für die Verknüpfung mit dem C-Quellcode im ursprünglichen RFC. Obwohl ich wahrscheinlich mit dem Quellcode von Microchip arbeiten würde, werden dieselben Leute, die den Chip hergestellt haben, auf dem dies laufen wird.
Davidcary
3

von der Wikipedia-Seite auf MD5 :

... hat sich gezeigt, dass MD5 als solches nicht kollisionssicher ist. MD5 ist nicht für Anwendungen wie SSL-Zertifikate oder digitale Signaturen geeignet, die auf dieser Eigenschaft beruhen.

und von den SSL-Forschern auf derselben Seite:

Wir hoffen auch, dass die Verwendung von MD5 in anderen Anwendungen ebenfalls überdacht wird.

Ich verstehe, dass Sie das wahrscheinlich nicht hören wollen, aber brauchen Sie wirklich MD5? Es sollte nicht für kryptografische Zwecke verwendet werden, da es zu unsicher ist (und Bootsladungen von Regenbogentabellen verfügbar sind). Wenn Sie nach etwas suchen, um nur Daten zu validieren, schauen Sie sich CRC (Code hier ) an, das rechnerisch billiger ist. Wenn Sie es jedoch für kryptografische Zwecke verwenden, kann ich dann vorschlagen, zu SHA zu wechseln ? Das einzige Problem ist, dass die meisten kryptografisch sicheren Algorithmen auf Mikrocontrollern nicht besonders gut funktionieren. Ich weiß, es scheint, als sei MD5 "gut genug", aber der technische Weg besteht darin, auf Nummer sicher zu gehen.

Jeremy
quelle
1
Schließen Sie MD5 nicht vollständig aus: Ihre Aussage "Es sollte nicht für kryptografische Zwecke verwendet werden, da es zu unsicher ist" ist zu übergeneralisiert.
Jason S
1
Verwenden Sie auch nicht die Tatsache, dass ein Hash-Algorithmus Regenbogentabellen hat oder nicht, als Überlegung, ob Sie ihn verwenden möchten oder nicht. Wenn SHA jetzt nicht viele Regenbogentabellen hat, wird es. Fügen Sie einer Nachricht ein geheimes "Salz" hinzu, um dieses Problem zu umgehen.
Jason S