19/Salado de contraseña

De MoodleDocs
Revisión del 14:02 19 mar 2016 de German Valero (discusión | contribs.) (Versiones)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)

Moodle 1.9

note icon.png Existe documentación diferente para varias versiones de Moodle: Esta documentación es para Moodle 1.9; si Usted desea ver la documentación más reciente vea Salado de contraseña.



¿Qué es el salado de contraseñas?

Las contraseñas se guardan en Moodle en una forma cifrada(*) llamada 'resumen MD5 ' (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 (one way digital hashing function). Por lo que no tiene sentido hablar de un 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 por añadirles una cadena pseudo-aleatoria de caracteres antes de calcular 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 archivo de configuración config.php:

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

La cadena aleatoria de caracteres debe estar formada de letras (mayúsculas y minúsculas), números y otro tipo de caracteres (excepto la comilla simple "'" y la diagonal inversa "\"). 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: Por razones de seguridad, la única forma de activar el salado de contraseñas es por editar el fichero config.php. No es posible hacerlo desde la interfaz Moodle.

Consejo': Guarde una copia de su sal de contraseñas en otro lugar además del fichero config.php, para evitar que todos los usuarios del sitio tengan que realizar la operación de recuperación de contraseña en caso de que se pierda la sal.

¿Cómo cambiar la sal?

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

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

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

Si en el futuro se llegara a cambiar nuevamente la sal, entonces todas las sales previas deberán mantenerse 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).

¿Cómo 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 sal original a un valor "alt", como si estuviera cambiando la sal (ver más arriba):

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

¿Cómo importar usuarios de otro sitio?

Si importa usuarios de otro sitio Moodle que use una sal de contraseña, entonces 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, entonces la sal se añade a la contraseña del usuario antes de calcular el resumen MD5.

Si el resumen MD5 de la contraseña del usuario sin salar pasa la validación, entonces se asume que la contraseña está sin salar, es decir, la sal se habilitó después de que el usuario ingresó al sistema. Por lo tanto, en ese instante se sala la contraseña y se guarda el resumen MD5 salado. Esto significa que la contraseña se sala durante el primer inicio de sesión después de que se haya establecido la sal en el fichero config.php.

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 sal original (antigua) en uno de los valores alternativos.

Cuando un usuario entra en sesión con una contraseña salada con una sal "antigua", 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, entonces el sistema actualizará la contraseña cifrada usando la sal actual (esto es, la sal principal).