Implementacja MD5 dla mikrokontrolera

11

Czy ktoś ma jakieś przykłady algorytmu MD5 dla mikrokontrolera (najlepiej 8-bitowego)? W naszym projekcie wykorzystamy urządzenie z serii Microchip PIC18.

J. Polfer
źródło

Odpowiedzi:

11

Jeśli szukasz implementacji C, stos Microchip TCP / IP ma implementację MD5 w pliku Hashes.c.

mjh2007
źródło
Właśnie tego potrzebowałem.
J. Polfer,
9

Oto implementacja MD5 z EtherNut (oparta na AVR)

Toby Jaffey
źródło
4

Trzymałbym się znanej, renomowanej implementacji MD5 i trzymałam się z dala od bibliotek, które można znaleźć u dostawców zewnętrznych. Oryginalny RFC 1321, który opisywał MD5, ma przykładową implementację C.

Przypomnienie: znanymi słabościami MD5 są ataki kolizyjne, a nie ataki preimage , więc jest odpowiedni dla niektórych aplikacji kryptograficznych, ale nie dla innych. Jeśli nie znasz różnicy, nie powinieneś jej używać, ale nie odrzucaj jej całkowicie. Zobacz http://www.vpnc.org/hash.html .

Jason S.
źródło
1
W przypadku kryptografii omijałbym całkowicie MD5 ...
Toby Jaffey
1
@Joby: doceń tę myśl, ale MD5 ma pewne aspekty, które są odpowiednie dla kryptografii. Musisz tylko poznać jego mocne i słabe strony.
Jason S
+1 za linkowanie do kodu źródłowego C w oryginalnym RFC. Chociaż prawdopodobnie wybrałbym kod źródłowy z Microchip, ci sami ludzie, którzy stworzyli układ, na którym będzie działał.
davidcary
3

ze strony wikipedii na MD5 :

... wykazano, że MD5 nie jest odporny na kolizję jako taki, MD5 nie nadaje się do aplikacji takich jak certyfikaty SSL lub podpisy cyfrowe oparte na tej właściwości.

i od badaczy SSL na tej samej stronie:

Mamy również nadzieję, że użycie MD5 w innych aplikacjach również zostanie ponownie rozważone.

Rozumiem, że prawdopodobnie nie chcesz tego słyszeć, ale czy naprawdę potrzebujesz MD5? Nie należy go używać do celów kryptograficznych, ponieważ jest zbyt niepewny (a dostępnych jest mnóstwo tęczowych tabel). Jeśli szukasz czegoś, co tylko zweryfikuje dane, spójrz na CRC (kod tutaj ), który jest tańszy obliczeniowo. Jeśli z wykorzystaniem go do celów kryptograficznych choć wtedy mogę zasugerować przeniesienie do SHA ? Jedynym problemem jest to, że większość bezpiecznych algorytmów kryptograficznych nie działa szczególnie dobrze na mikrokontrolerach. Wiem, że może się wydawać, że MD5 jest „wystarczająco dobry”, ale inżynieryjnym sposobem jest błądzenie po stronie ostrożności.

Jeremy
źródło
1
Nie wykluczaj całkowicie MD5: stwierdzenie „Nie należy go używać do celów kryptograficznych, ponieważ jest zbyt niepewne” jest zbyt ogólne.
Jason S
1
Nie używaj też faktu, że algorytm skrótu ma lub nie ma tablic tęczy, aby rozważyć jego użycie lub nie. Jeśli SHA nie ma teraz wielu tęczowych stołów, zrobi to. Dodaj tajną „sól” do wiadomości, aby obejść ten problem.
Jason S