19/Salado de contraseña

De MoodleDocs
Revisión del 22:44 18 nov 2009 de Iñaki Arenaza (discusión | contribs.) (Traducción inicial)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)

¿Qué es el salado de contraseñas?

Las contraseñas se guardan en Moodle en una forma cifrada(*) llamada 'resumen MD5 md5 hash' (o hash MD5).

(*) Aun cuando en esta página hablemos de cifrado de contraseñas, en realidad no es tal. Se trata de un función de resumen digital de vía única (on way digital hashing function). Por lo que no tiene sentido hablar de descifrado de las mismas, por cuanto dichas funciones se supone que no son reversibles.

El salado de contraseñas es una forma de hacer las contraseñas más seguras, añadiendo una cadena aleatoria de caracteres a las mismas antes de que se calcule el resumen MD5. Esto hace que sean más difíciles de averiguar (cuanto más larga la cadena, más difícil se hace el averiguarlas).

Cómo habilitar el salado de contraseñas

Para usar una sal de contraseña, añada la siguiente línea a su fichero config.php:

$CFG->passwordsaltmain = 'cadena larga de caracteres aleatorios con gran cantidad de caracteres';

La cadena aleatoria de caracteres debería ser una mezcal de letras (mayúsculas y minúsculas), números y otro tipo de caracteres (excepto la comilla simple y la barra inclinada hacia la izquierda '\'). Se puede usar el Generador de Sales Moodle para obtener una cadena aleatoria larga aceptable. Se recomienda que la longitud de dicha cadena sea de al menos 40 caracteres.

Nota: For razones de seguridad, la única forma de activar el salado de contraseñas es editando el fichero config.php. No es posible hacerlo desde la interfaz Moodle.

Como cambiar la sal

Si por alguna razón desea cambiar la sal, es imprescindible que se mantenga la antigua sal en el fichero config.php junto conla nueva sal.

passwordsaltmain debería cambiarse passwordsaltalt1 (nótese que se debe usar la expresión exactamente tal cual está escrita aquí) para la antigua sal tal como sigue:

$CFG->passwordsaltalt1 = 'antigua cadena aleatoria larga';
$CFG->passwordsaltmain = 'nueva cadena aleatoria larga';

Si cambia la sal de nuevo en el futuro, deberá mantener todas las sales previas durante un cierto tiempo (hasta que todos los usuarios hayan entrado en sesión al menos una vez, para que empiecen a usar la nueva sal). Puede usar $CFG->passwordsaltalt2, $CFG->passwordsaltalt3, etc. para guardar hasta las últimas 20 sales.

Atención: ¡Si cambia la sal y no mantiene la anterior en el fichero config.php no podrá entrar en sesión en su sitio! Si esto sucede, deberá hacer uso de la funcionalidad de recuperación de contraseñas estándar (que generará una nueva y se la enviará por correo a la dirección especificada en su configuración de usuario).

Como deshabilitar el salado de contraseñas

Nota: ¡No se recomienda! Una vez habilitado, debería mantener el salado de contraseñas activado.

Para deshabilitar el salado de contraseñas, puede borrar, comentar o cambiar a la cadena vacía el valor de $CFG->passwordsaltmain:

// EJEMPLO: poner la cadena vacía
$CFG->passwordsaltmain = '';
// EXAMPLE: comentar el valor
/*
$CFG->passwordsaltmain = '';
*/

Sin embargo, ¡eso no es todo! Además tiene que mover el valor de la antigua aun valor "alt", como si estuviera cambiando la sal (ver más arriba):

$CFG->passwordsaltalt1 = 'antigua cadena aleatoria larga';
$CFG->passwordsaltmain = '';

Como importar usuarios de otro sitio

Si importa usuario de otro sitio Moodle que usa una sal de contraseña, necesita añadir la sal del otro sitio en su fichero config.php. Para ello puede usar cualquiera de las 20 sales alternativas disponibles:

$CFG->passwordsaltalt1, $CFG->passwordsaltalt2, ...  $CFG->passwordsaltalt20

¿Cómo funciona el salado de contraseñas?

Cuando se valida una contraseña, el código comprueba el valor de CFG->passwordsaltmain. Si el valor está definido, añade la contraseña del usuario a la sal antes de calcular el resumen MD5.

Si el resumen MD5 de la contraseña del usuario sin salar valida, entonces se supone que la contraseña está sin salar (la sal se habilitó después de que el usuario entrará en sesión por última vez). En ese mismo instante se sala la contraseña y se guarda el resumen MD5 salado.

Si ni el resumen MD5 salado ni el resumen MD5 sin salar validan, entonces el código comprueba si el resumen MD5 con alguna de las 20 sales alternativas lo hace.

Si se cambia la sal, para que las cuentas de usuario existentes no se queden sin poder ser usadas, es necesario almacenar la angitua sal en uno de los huecos alternativos.

Cuando un usuario que tiene una contraseña con una "sal antigua" entra en sesión, la primera comprobación de su contraseña con la nueva sal fallará. En ese caso el código probará con las sales alternativas, buscando una que permita verificar que la contraseña es válida.

Si se confirma que la contraseña del usuario es válida, el sistema actualizará la contraseña cifrada usando la última sal (esto es, la sal principal).