Hashes aceitáveis pela sombra

0

Quais algoritmos de hash o / etc / shadow aceita?

Eu tentei gerar hashes de senha do PHP, usando password_hash("password1234", PASSWORD_DEFAULT); , mas isso parece não funcionar quando eu tento autenticar uma vez que eu substituo a senha de um usuário pelo hash fornecido pelos hashes que eu gero com PHP. / p>

Alguma razão pela qual o baiacu não funciona? (Eu acho que o PHP usa blowfish por padrão)

    
por Eliter 24.11.2017 / 23:14

2 respostas

2

As senhas são codificadas usando a função de biblioteca crypt(3) ; veja a página de manual para crypt(3) . A função escolhe a função de criptografia com base no formato do salt :

  • $1$ salt_chars $ : use MD5
  • $2a$ salt_chars $ : use o Blowfish (não padrão, provavelmente não disponível)
  • $5$ salt_chars $ : use SHA-256
  • $6$ salt_chars $ : use SHA-512
  • Não no formulário $ tipo $ salt_chars $ : use DES como antigamente.

Eu não tenho idéia se você pode usar o PHP para emular exatamente o que o crypt(3) faz.

    
por AlexP 24.11.2017 / 23:54
0
% bl0ck_qu0te%

Em seguida, você precisa salvar a saída no formato que /etc/shadow espera, que, conforme explicado por AlexP, é:

$<method>$<salt>$<hash>
A saída de

password_hash é diferente. Ele retorna:

$<method>$<cost>$<hash>

Por exemplo, uma senha de a ( password_hash("a", PASSWORD_DEFAULT) ) é enviada para mim:

$2y$10$w4hgkTWvE37igKd9TMn8xOcCNT/L/lojOEkqaPyIW4qdyAp92GmHC

E o sal é estranhamente parte do hash:

password_hash("a", PASSWORD_DEFAULT, ['salt'=>'abcdefghijklmnopqrstuv'])
// $2y$10$abcdefghijklmnopqrstuuj/LkVFwQAC6H0GkC0f1Bcmj82rKvDn.

Mas a versão shadow é:

$6$OaeCC6PI$qGI4OTUD/seGOvJE.ckkrWMoqiVQBf8EXtQFto7MsKP8TyTCxPXPF66csX3c4ljdRnjM1U8W65EpwUgMF.4qf0

Veja o sal no segundo campo?

De qualquer forma, não sei o que o PHP está fazendo aqui. Você provavelmente deve usar crypt , mas não sou especialista em PHP e isso é uma questão para SO.

Além disso, para mim, man crypt informa que 2y não é entendido por ele:

If salt is a character string starting with the characters "$id$"  fol-
lowed by a string terminated by "$":

      $id$salt$encrypted

then  instead  of  using  the DES machine, id identifies the encryption
method used and this then determines  how  the  rest  of  the  password
string is interpreted.  The following values of id are supported:

      ID  | Method
      ---------------------------------------------------------
      1   | MD5
      2a  | Blowfish (not in mainline glibc; added in some
          | Linux distributions)
      5   | SHA-256 (since glibc 2.7)
      6   | SHA-512 (since glibc 2.7)
    
por muru 25.11.2017 / 05:40