Implementação MD5 para microcontrolador

11

Alguém tem algum exemplo do algoritmo MD5 para um microcontrolador (de preferência um de 8 bits)? Nosso projeto vai usar um dispositivo da série Microchip PIC18.

J. Polfer
fonte

Respostas:

11

Se você estiver procurando por uma implementação C, a pilha Microchip TCP / IP possui uma implementação MD5 no arquivo Hashes.c.

mjh2007
fonte
Isso é exatamente o que eu precisava.
J.J. Polfer
9

Aqui está a implementação MD5 do EtherNut (baseado no AVR)

Toby Jaffey
fonte
4

Eu continuaria com uma implementação respeitável conhecida do MD5 e ficaria longe das bibliotecas encontradas por fornecedores de terceiros. A RFC 1321 original, que descreveu o MD5, tem uma amostra de implementação C.

Lembrete: os pontos fracos conhecidos do MD5 são ataques de colisão, e não ataques de pré-imagem ; portanto, é adequado para alguns aplicativos criptográficos, mas não para outros. Se você não sabe a diferença, não deve usá-la, mas não a descarte por completo. Consulte http://www.vpnc.org/hash.html .

Jason S
fonte
1
Para a criptografia, eu orientar clara de MD5 altogther ...
Toby Jaffey
1
@Joby: aprecio o pensamento, mas o MD5 tem aspectos que são ótimos para criptografia. Você apenas precisa conhecer seus pontos fortes e fracos.
Jason S
+1 para vincular ao código fonte C na RFC original. Embora eu provavelmente usasse o código fonte da Microchip, as mesmas pessoas que fabricaram o chip serão executadas.
Davidcary
3

Você pode encontrar uma boa descrição e alguns pseudocódigos para a wikipedia do algoritmo MD5 em http://en.wikipedia.org/wiki/MD5

Você também pode postar esta pergunta no stackoverflow, pois ela é mais voltada para as questões de programação.

semaj
fonte
3

da página da wikipedia no MD5 :

... foi demonstrado que o MD5 não é resistente a colisões, portanto, o MD5 não é adequado para aplicativos como certificados SSL ou assinaturas digitais que dependem dessa propriedade.

e dos pesquisadores de SSL na mesma página:

Também esperamos que o uso do MD5 em outros aplicativos seja reconsiderado.

Eu entendo que você provavelmente não quer ouvir isso, mas você realmente precisa do MD5? Não deve ser usado para fins criptográficos, pois é muito inseguro (e há cargas de barcos de tabelas arco-íris disponíveis). Se você está procurando algo para validar apenas os dados, consulte o CRC (código aqui ), que é computacionalmente mais barato. Se você o estiver usando para fins criptográficos, posso sugerir a mudança para o SHA ? O único problema é que a maioria dos algoritmos criptograficamente seguros não funciona particularmente bem nos microcontroladores. Eu sei que pode parecer que o MD5 é "bom o suficiente", mas o caminho da engenharia é errar por precaução.

Jeremy
fonte
1
Não descarte completamente o MD5: sua declaração de "Não deve ser usada para fins criptográficos, pois é muito insegura" é muito generalizada.
Jason S
1
Também não use o fato de que um algoritmo de hash possui ou não tabelas de arco-íris como consideração para usá-lo ou não. Se o SHA não tiver muitas tabelas arco-íris agora, ele terá. Acrescente um "sal" secreto a uma mensagem para contornar esse problema.
Jason S