Todas as distribuições Linux usam a mesma função hash criptográfica?

6

Todas as distribuições Linux usam a mesma função hash criptográfica ?

Se sim, ele é fornecido com o próprio kernel?

EDIT: - Eu me refiro à função usada principalmente para armazenar senhas de login de usuário.

    
por Registered User 20.03.2014 / 12:20

3 respostas

9

Não & não às suas perguntas.

Eu daria uma olhada na função crypt(3) para mais informações. De man crypt(3) :

GNU EXTENSION

The glibc2 version of this function has the following additional features. If salt is a character string starting with the three characters $1$ followed by at most eight characters, and optionally terminated by $, then instead of using the DES machine, the glibc crypt function uses an MD5-based algorithm, and outputs up to 34 bytes, namely $1$&‹string›$, where ‹string› stands for the up to 8 characters following $1$ in the salt, followed by 22 bytes chosen from the set [a–zA–Z0–9./]. The entire key is significant here (instead of only the first 8 bytes).

Você pode verificar sua configuração de pam para ver se está usando MD5 ou DES:

$ egrep "password.*pam_unix.so" /etc/pam.d/system-auth
password    sufficient    pam_unix.so md5 shadow nis nullok try_first_pass use_authtok

E você pode ver neste arquivo /etc/shadow dos sistemas que está usando o MD5 também:

root:$1$<DELETED PASSWORD HASH>:14245:0:99999:7:::

Os códigos que você verá no /etc/shadow para cada tipo de hashing:

  • $ 1 - MD5
  • $ 2 - blowfish
  • $ 2a - eksblowfish
  • $ 5 - SHA-256
  • US $ 6 - SHA-512

Nas distros da Red Hat você pode mudar isso usando o comando authconfig .

$ sudo authconfig --passalgo=sha512 --update

Referências

por 20.03.2014 / 14:40
5

Observe que uma função hash de senha é um tipo específico de função hash criptográfica, que não é usada para outros usos de funções hash criptográficas. Uma função de hash de senha precisa ser lenta; Geralmente, usamos funções hash criptográficas rápidas. Na verdade, tecnicamente, uma função de hash de senha não é uma função de hash, mas um algoritmo de alongamento de chave , usando duas entradas ( a senha e o sal), enquanto uma função hash usa uma única entrada (os dados). Veja Como segura hash senhas? para mais informações sobre hashing de senha.

Por razões históricas, muitos documentos unix chamam a senha de hash de “criptografia”, mas isso não é um processo de criptografia (você não pode descriptografar um hash de volta na senha). A razão histórica é que, nos primórdios do Unix, a função hash de senhas era construída no algoritmo DES , que é basicamente usado para criptografia.

O hash de senha é executado por uma função na biblioteca padrão chamada crypt . (Observe que há um utilitário tradicional do Unix chamado crypt , que não está relacionado; este, na verdade, criptografa. ) O kernel não sabe nada sobre senhas. (Alguns kernels em algumas plataformas fornecem uma biblioteca criptográfica, para aproveitar os aceleradores de hardware.)

A função crypt do histórico usou um algoritmo baseado em DES, o que foi ok para o tempo, mas é muito fraco para as velocidades atuais do computador. Atualmente, a função hash de senha é indicada pelos caracteres no início do salt: $1$ , $5$ , $6$ ,… Esses três valores (e mais alguns) são de fato padrão em muitos unices (incluindo sistemas Linux com base no Glibc, que é praticamente todos os não incorporados e alguns dos maiores incorporados). Algumas variantes unix oferecem mais opções. Os sistemas Linux embarcados podem não ter todos esses métodos.

$1$ é baseado no MD5, mas com um número fixo de iterações e é obsoleto por esse motivo. $5$ e $6 são baseados em um número variável de iterações de SHA2-256 e SHA2-512, respectivamente. Consulte Como criar hashes de senha SHA512 na linha de comando se você quiser calcular alguns hashes de senha a partir da linha de comando.

    
por 21.03.2014 / 03:26
4

Não e não é fornecido pelo kernel. dependendo da versão, da distro e dos unixes que você usa, você encontrará diferentes algoritmos de codificação de hash usados (suponho que você queira armazenar senhas principalmente). Ao olhar para o arquivo /etc/shadow como root, você poderá ver qual hash é usado no seu linux.

Se você quiser assinar algo com um hash, a maioria dos Unices integrará o binário md5sum ou sha1sum

    
por 20.03.2014 / 12:24

Tags