Cada usuario de un sistema UNIX® tiene una contraseña asociada a su cuenta. Parece obvio que estas contraseñas sólo deben ser conocidas por el usuario y por el sistema operativo. Para que estas contraseñas permanezcan en secreto se cifran con lo que se conoce como un “hash de una pasada”, esto es, sólo pueden ser fácilmente cifradas pero no descifradas. En otras palabras, lo que acabamos de decir es tan obvio que ni siguiera es verdad: el propio sistema operativo no sabe cuál es realmente la contraseña. Lo único que conoce es la versión cifrada de la contrasenña. La única manera de obtener la contraseña en “texto plano” es por medio de una búsqueda de fuerza bruta en el espacio de contraseñas posibles.
Por desgracia la única manera segura de cifrar contraseñas cuando UNIX® empezó a hacerlo estaba basada en DES, (“Data Encryption Standard”, “estándar de cifrado de datos”). Esto no era un gran problema para usuarios residentes en los EEUU, pero el código fuente de FreeBSD no se podía exportar desde los EEUU, así que FreeBSD hubo de buscar una forma de complir las leyes de EEUU y al mismo tiempo mantener la compatibilidad con otras variantes de UNIX® que que todavía utilizaban DES.
La solución fué dividir las bibliotecas de cifrado para que los usuarios de EEUU pudieran instalar las bibliotecas DES pero los usuarios del resto del mundo tuvieran un método de cifrado que pudiera ser exportado. Así es como FreeBSD comenzó a usar MD5 como su método de cifrado por defecto. MD5 se considera más seguro que DES, así que se mantiene la opción de poder instalar DES por motivos de compatibilidad.
En versiones anteriores a FreeBSD 4.4
libcrypt.a
era un enlace
simbólico que apuntaba a la biblioteca que se usaba para el
cifrado. En FreeBSD 4.4 se cambió
libcrypt.a
para ofrecer una biblioteca hash
configurable de validación de contraseñas.
Actualmente la biblioteca permite funciones hash DES, MD5 y
Blowfish. FreeBSD utiliza por defecto MD5 para cifrar
contraseñas.
Es muy sencillo identificar qué método usa FreeBSD
para cifrar. Una forma es examinando las contraseñas
cifradas en /etc/master.passwd
.
Las contraseñas cifradas con el hash MD5 son más
largas que las cifradas con el hash DES, y también
comienzan por los caracteres
$1$
. Las contraseñas
que comienzan por $2a$
están
cifradas con la función hash de Blowfish. Las
contraseñas DES no tienen ninguna
característica particular, pero son más cortas que
las contraseñas MD5, y están codificadas en un
alfabeto de 64 caracteres que no incluye el caracter
$
; es por esto que una cadena
relativamente corta que comience con un signo de
dólar es muy probablemente una contraseña
DES.
El formato de contraseña a usar en nuevas
contraseñas se define en
/etc/login.conf
mediante
passwd_format
, pudiendo tener los valores
des
, md5
o
blf
. Consulte la página de manual
login.conf(5) para más información.
Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Si tiene dudas sobre FreeBSD consulte la
documentación antes de escribir a la lista
<questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a
<doc@FreeBSD.org>.