Implementasi MD5 untuk mikrokontroler

11

Adakah yang punya contoh algoritma MD5 untuk mikrokontroler (lebih disukai yang 8-bit)? Proyek kami akan menggunakan perangkat seri Microchip PIC18.

J. Polfer
sumber

Jawaban:

11

Jika Anda mencari implementasi C, tumpukan Microchip TCP / IP memiliki implementasi MD5 dalam file Hashes.c.

mjh2007
sumber
Inilah yang saya butuhkan.
J. Polfer
9

Inilah implementasi MD5 dari EtherNut (berbasis AVR)

Toby Jaffey
sumber
4

Saya akan tetap menggunakan implementasi MD5 yang memiliki reputasi baik, dan menjauh dari perpustakaan yang Anda temukan dari vendor pihak ke-3. Asli RFC 1321 yang menggambarkan MD5 memiliki implementasi C sampel.

Pengingat: kelemahan yang diketahui untuk MD5 adalah serangan tabrakan, dan bukan serangan preimage , sehingga cocok untuk beberapa aplikasi kriptografi tetapi tidak untuk yang lain. Jika Anda tidak tahu bedanya, Anda seharusnya tidak menggunakannya, tetapi jangan membuangnya sama sekali. Lihat http://www.vpnc.org/hash.html .

Jason S
sumber
1
Untuk kriptografi, saya akan menjauhkan diri dari MD5 altogther ...
Toby Jaffey
1
@ Boby: menghargai pemikiran itu, tetapi MD5 memiliki aspek-aspeknya yang baik untuk kriptografi. Anda hanya harus tahu kekuatan dan kelemahannya.
Jason S
+1 untuk menautkan ke kode sumber C di RFC asli. Meskipun saya mungkin akan pergi dengan kode sumber dari Microchip, orang yang sama yang membuat chip ini akan berjalan.
davidcary
3

Anda dapat menemukan deskripsi yang baik dan beberapa pseudocode untuk wikipedia algoritma MD5 di http://en.wikipedia.org/wiki/MD5

Anda mungkin juga mempertimbangkan memposting pertanyaan ini pada stackoverflow karena lebih diarahkan pada pertanyaan pemrograman.

semaj
sumber
3

dari halaman wikipedia di MD5 :

... telah terbukti bahwa MD5 tidak tahan terhadap benturan, MD5 tidak cocok untuk aplikasi seperti sertifikat SSL atau tanda tangan digital yang bergantung pada properti ini.

dan dari para peneliti SSL di halaman yang sama:

Kami juga berharap bahwa penggunaan MD5 dalam aplikasi lain akan dipertimbangkan kembali juga.

Saya mengerti bahwa Anda mungkin tidak ingin mendengar ini, tetapi apakah Anda benar-benar membutuhkan MD5? Seharusnya tidak digunakan untuk keperluan kriptografi karena terlalu tidak aman (dan ada banyak tabel pelangi yang tersedia). Jika Anda mencari sesuatu untuk hanya memvalidasi data, lihat CRC (kode di sini ) yang secara komputasi lebih murah. Jika Anda sedang menggunakannya untuk tujuan kriptografi meskipun, maka mungkin saya sarankan pindah ke SHA ? Satu-satunya masalah adalah sebagian besar algoritma yang aman secara kriptografis tidak berjalan dengan baik pada mikrokontroler. Saya tahu ini mungkin tampak seperti MD5 "cukup baik", tetapi cara rekayasa adalah dengan berbuat salah di sisi hati-hati.

Jeremy
sumber
1
Jangan sepenuhnya mengesampingkan MD5: pernyataan Anda tentang "Itu tidak boleh digunakan untuk keperluan kriptografi karena terlalu tidak aman" terlalu umum.
Jason S
1
Juga tidak menggunakan fakta bahwa algoritma hash memiliki atau tidak memiliki tabel pelangi sebagai pertimbangan untuk menggunakannya atau tidak. Jika SHA tidak memiliki banyak tabel pelangi sekarang, itu akan. Tambahkan "garam" rahasia ke sebuah pesan untuk mengatasi masalah itu.
Jason S