Ativar suporte a hash baseado em blowfish para cripta

13

Como habilito o suporte ao crypt_blowfish para senhas sombreadas e PHP em um servidor Linux (Debian)?

Estou me referindo ao bcrypt baseado no Blowfish no estilo OpenBSD , conhecido no PHP como CRYPT_BLOWFISH.

Até onde eu sei, não há pacote Debian para ele, que outras opções eu tenho para habilitar esse algoritmo de hash para PHP?

Nota:
A função crypt () do PHP interage de maneira relativamente direta com a função crypt (3) da biblioteca C fornecida pelo sistema operacional subjacente.

Atualizar
A nomeação de pacotes não é tão clara quanto poderia (deveria) ser.
O pacote PEAR Crypt_Blowfish é um substituto para a extensão MCrypt do PHP, permitindo a rápida criptografia bidirecional de blowfish.

Além disso, o pacote Debian BCrypt também é uma implementação do algoritmo blowfish bidirecional 'normal'.

O que estou procurando é a implementação de Bcrypt-hash para senhas de hash.

Jacco
fonte
"pear install Crypt_blowfish" não funciona?
Cori
O pacote pear crypt_blowfish é o algoritmo de criptografia bidirecional 'normal' bidirecional. Estou procurando o algoritmo de hash baseado em blowfish.
2111 Jacco
ah, agora eu vejo o problema
Cori
Não sabia que você poderia ter uma recompensa mais alta em uma pergunta do que seu representante atual. Interessante.
Copas
O representante é deduzido imediatamente, então ele tinha ~ 200 representantes e agora tem ~ 50.
ceejayoz

Respostas:

9

O pacote que você precisa instalar no debian é libpam-unix2.

Em seguida, você terá que editar os seguintes arquivos em /etc/pam.d/e alterar todo o pam_unix.souso para pam_unix2.so:

  • conta comum
  • autenticação comum
  • senha comum
  • sessão comum

Por fim, edite o common-passwordarquivo e substitua o parâmetro "md5" por "blowfish".

As senhas que são atualizadas depois que essas modificações são feitas serão hash usando blowfish. As senhas de sombra existentes não são modificadas. Fonte

Para usar blowfish no PHP, você fornece um sal de blowfish para crypt(). Como isso:

crypt('sting', '$2a$07$' . substr('saltsaltsalt', 0, CRYPT_SALT_LENGTH) ) 

Você deve primeiro verificar se CRYPT_BLOWFISH == 1. E você precisará usar um sal suficientemente longo, que seja igual a (ou maior que) 22 caracteres. Fonte

hayalci
fonte
Hmmm, depois de fazer essas alterações, CRYPT_BLOWFISH ainda não é igual a 1, por algum motivo.
Kzqai 5/08
1
Uma ressalva: se a sua versão do pam_unix2 não suportar o algoritmo de hash usado atualmente para a senha de um usuário, esse usuário poderá não conseguir fazer login. Acho que foi o que encontrei na minha caixa Debian; algumas contas estavam usando o SHA512 e não podiam fazer login, mas uma conta que usava o MD5 poderia. Você pode definir essas senhas a partir do root, porque passwdnão solicita a senha antiga ao executar a partir do root. Importante: mantenha sua sessão raiz aberta até ter certeza de que pode fazer login novamente!
Tom Zych