Diferencia entre revisiones de «19/Salado de contraseña»

De MoodleDocs
(Corregir enlace a Wikipedia en Español para MD5)
(Corregidas algunas erratas e incorporados los últimos cambios de la versión en inglés.)
Línea 3: Línea 3:
Las contraseñas se guardan en Moodle en una forma cifrada(*) llamada '[http://es.wikipedia.org/wiki/MD5 resumen MD5 ]' (o hash MD5).
Las contraseñas se guardan en Moodle en una forma cifrada(*) llamada '[http://es.wikipedia.org/wiki/MD5 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 (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.
(*) 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 descifrado de las mismas, por cuanto dichas funciones se supone que no son reversibles.


El [http://es.wikipedia.org/wiki/Sal_%28criptograf%C3%ADa%29 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).
El [http://es.wikipedia.org/wiki/Sal_%28criptograf%C3%ADa%29 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).
Línea 16: Línea 16:


''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.
''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.
''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.


==Como cambiar la sal==
==Como cambiar la sal==
Línea 21: Línea 23:
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.
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.


<code>passwordsaltmain</code> debería cambiarse <code>passwordsaltalt1</code> (nótese que se debe usar la expresión exactamente tal cual está escrita aquí) para la antigua sal tal como sigue:
<code>passwordsaltmain</code> debería cambiarse a <code>passwordsaltalt1</code> (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->passwordsaltalt1 = 'antigua cadena aleatoria larga';
Línea 29: Línea 31:


''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!''
''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).
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).


Línea 45: Línea 48:
  */
  */


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):
Sin embargo, ¡eso no es todo! Además '''tiene que mover el valor de la antigua sal a un valor "alt"''', como si estuviera cambiando la sal (ver más arriba):


  $CFG->passwordsaltalt1 = 'antigua cadena aleatoria larga';
  $CFG->passwordsaltalt1 = 'antigua cadena aleatoria larga';
Línea 52: Línea 55:
==Como importar usuarios de otro sitio==
==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:
Si importa usuariow 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
  $CFG->passwordsaltalt1, $CFG->passwordsaltalt2, ...  $CFG->passwordsaltalt20
Línea 58: Línea 61:
==¿Cómo funciona el salado de contraseñas?==
==¿Cómo funciona el salado de contraseñas?==


Cuando se valida una contraseña, el código comprueba el valor de <code>CFG->passwordsaltmain</code>. Si el valor está definido, añade la contraseña del usuario a la sal antes de calcular el resumen MD5.
Cuando se valida una contraseña, el código comprueba el valor de <code>CFG->passwordsaltmain</code>. Si el valor está definido, añade la sal a la contraseña del usuario 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 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. '''Por tanto 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 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.
Si se cambia la sal, para que las cuentas de usuario existentes no se queden sin poder ser usadas, es necesario almacenar la angtgua sal en uno de los valores 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.
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.

Revisión del 21:21 28 dic 2009

¿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 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.

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.

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 a 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 sal a un 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 usuariow 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 sal a la contraseña del usuario 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. Por tanto 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 angtgua sal en uno de los valores 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).