Algoritmo Grub MD5 Crypt

1

Como o algoritmo MD5 do Grub funciona? Quando você executa o grub-md5-crypt e insere a mesma senha toda vez que obtém resultados diferentes. Geralmente, o md5 deve sempre retornar o mesmo hash, então por que a versão do grub retorna algo diferente a cada vez?

Além disso, considerando isso, como determinar se você está digitando a senha correta? Se cada criação de criptografia com a mesma senha gera um hash diferente, então como é que, mais tarde, quando você digita sua senha (e teoricamente o mesmo algoritmo é usado), como os hashs serão diferentes, como eles são combinados para mostrar forneceu a senha correta?

Estou assumindo que um sal é usado em algum lugar e que o sal é gerado aleatoriamente, mas qual é o sal, e como ele é gerado exatamente, e então como ele é replicado?

    
por Aram Papazian 29.09.2011 / 21:23

2 respostas

4

O código-fonte do grub é o melhor lugar para descobrir. A lógica necessária está em stage2/md5.c in:

int md5_password (const char *key, char *crypted, int check)

Produz cadeias da forma: $1$aaaaaaaa$bbbbbbbbbbbbbbbbbbbbbb , em que a sequência "aaaaaaaa" é um sal aleatório, e "bbbbbbbbbbbbbbbbbbbbbb" é o resultado da mistura da senha e do sal até 1000 vezes de uma maneira particular e uma codificação base64 modificada do resultado md5.

O dicionário base64 modificado é:

./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

O algoritmo de mixagem atual pode ser redistribuído sob os termos da GNU General Public License versão 2 (ou qualquer versão posterior), e você pode obtê-lo a partir do Site FTP GNU ou qualquer espelho GNU.

    
por 29.09.2011 / 21:44
5

Esse hash de senha é salgado. O sal é gerado aleatoriamente e armazenado com o hash. O delimitador de campo entre o sal e o hash é o cifrão ($).

link

    
por 29.09.2011 / 21:31