Habilite el soporte de hash basado en blowfish para la cripta

13

¿Cómo habilito el soporte de crypt_blowfish para contraseñas sombreadas y PHP en un servidor Linux (Debian)?

Me refiero al bcrypt basado en Blowfish de estilo OpenBSD , conocido en PHP como CRYPT_BLOWFISH.

Hasta donde sé, no hay un paquete Debian para él, ¿qué otras opciones tengo para habilitar este algoritmo de hash para PHP?

Nota: la función de
cifrado PHP ( PHP ) interactúa relativamente directamente con la función de cifrado de biblioteca C (3) proporcionada por el sistema operativo subyacente.


El nombre del paquete de actualización no es tan claro como podría (debería) ser.
El paquete PEAR Crypt_Blowfish es un reemplazo directo para la extensión MCrypt de PHP, lo que permite un cifrado rápido de blowfish bidireccional .

También el paquete Debian BCrypt es también una implementación del algoritmo de pez de dos vías 'normal'.

Lo que estoy buscando es la implementación de Bcrypt-hash para contraseñas hash.

Jacco
fuente
no funciona "pera instalar Crypt_blowfish"?
cori
El paquete pear crypt_blowfish es el algoritmo de cifrado bidireccional "normal" de blowfish. Estoy buscando el algoritmo de hash basado en blowfish.
Jacco
Ah, ahora veo el problema.
cori
No sabía que podría tener una mayor recompensa por una pregunta que su representante actual. Interesante.
Copas
El representante se deduce de inmediato, por lo que tenía ~ 200 representantes y ahora tiene ~ 50.
ceejayoz

Respuestas:

9

El paquete que necesita instalar en Debian es libpam-unix2.

Luego, tendrá que editar los siguientes archivos /etc/pam.d/y cambiar todo el pam_unix.souso a pam_unix2.so:

  • cuenta común
  • autenticación común
  • contraseña común
  • sesión común

Finalmente, edite el common-passwordarchivo y reemplace el parámetro "md5" con "blowfish".

Las contraseñas que se actualizan después de realizar estas modificaciones se cifrarán con blowfish. Las contraseñas ocultas existentes no se modifican. Fuente

Para usar blowfish en PHP, proporciona una sal de blowfish a crypt(). Me gusta esto:

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

Primero debe verificar si CRYPT_BLOWFISH == 1. Y deberá usar una sal lo suficientemente larga, que sea igual (o mayor que) 22 caracteres. Fuente

hayalci
fuente
Hmmm, después de hacer esos cambios, CRYPT_BLOWFISH todavía no es igual a 1, por alguna razón.
Kzqai
1
Una advertencia: si su versión de pam_unix2 no es compatible con el algoritmo de hash utilizado actualmente para la contraseña de un usuario, ese usuario no podrá iniciar sesión. Creo que eso es lo que encontré en mi caja de Debian; algunas cuentas usaban SHA512 y no podían iniciar sesión, pero una cuenta que usaba MD5 sí. Puede configurar esas contraseñas desde la raíz, porque passwdno solicita la contraseña anterior cuando se ejecuta desde la raíz. Importante: ¡mantenga su sesión raíz abierta hasta que esté seguro de poder iniciar sesión nuevamente!
Tom Zych