Información técnica sobre contraseñas
En este tema para profesionales de TI, se explica cómo implementa Windows las contraseñas en versiones de Windows a partir de Windows Server 2012 y Windows 8.1. También se describen las contraseñas seguras, las frases de contraseña y las directivas de contraseñas.
Cómo se almacenan las contraseñas en Windows
En este artículo, se proporciona información sobre el almacenamiento de contraseñas "en reposo".
Windows representa las contraseñas en cadenas UNICODE de 256 caracteres, pero el cuadro de diálogo de inicio de sesión está limitado a 127 caracteres. Por lo tanto, la contraseña más larga posible tiene 127 caracteres. Los programas como los servicios pueden usar contraseñas más largas, pero se deben establecer mediante programación.
El sistema operativo Windows almacena las contraseñas de muchas maneras diferentes para diferentes propósitos.
Contraseñas almacenadas como OWF
Para su uso en redes de Windows, incluidos los dominios de Active Directory, la contraseña se almacena de dos maneras diferentes de manera predeterminada: como función unidireccional de LAN Manager (OWF de LM) y como OWF de NT. "Función unidireccional" es un término que denota una transformación matemática unidireccional de los datos. Los datos que se transforman solo se pueden convertir mediante el cifrado unidireccional y no se pueden revertir. El tipo más común de función unidireccional en uso es un hash criptográfico. Un hash es un pequeño conjunto de datos que se asocia matemáticamente a un conjunto de datos mayor a partir del cual se calcula el hash. Si cambia el conjunto de datos mayor, el hash también cambia. Los hashes son útiles, por ejemplo, como suma de comprobación para comprobar que los datos no se han modificado en la transmisión. Un hash criptográfico es un hash que cumple ciertas propiedades. Un hash criptográfico debe, por ejemplo, crearse de tal manera que sea matemáticamente inviable en una cantidad razonable de tiempo deducir el conjunto de datos mayor solo a partir del hash. Del mismo modo, es matemáticamente inviable encontrar dos conjuntos de datos grandes que generen el mismo hash.
Existen muchos tipos diferentes de funciones unidireccionales. Todas las funciones hash son, por definición, funciones unidireccionales. Sin embargo, las funciones criptográficas normales que suelen ser reversibles también se pueden usar para crear una función unidireccional. Esto se puede hacer intercambiando los datos y la clave en una función criptográfica y cifrando el valor fijo (la clave) mediante el uso de los datos como clave. Así se calcula el hash de LM. El hash de LM se calcula de la siguiente manera:
- La contraseña se rellena con bytes NULL hasta exactamente 14 caracteres. Si la contraseña tiene más de 14 caracteres, se reemplaza por 14 bytes NULL para las operaciones restantes.
- La contraseña se convierte a mayúsculas.
- La contraseña se divide en dos claves de 7 bytes (56 bits).
- Cada clave se usa para cifrar una cadena fija.
- Los dos resultados del paso 4 se concatenan y se almacenan como el hash de LM.
El algoritmo de OWF de LM se incluye en Windows para la compatibilidad con versiones anteriores con software y hardware que no puede usar algoritmos más recientes.
El hash de NT es simplemente un hash. Se aplica un hash a la contraseña mediante el algoritmo MD4 y se almacena. La OWF de NT se usa para la autenticación por parte de los miembros del dominio tanto en Windows NT 4.0 como en dominios anteriores y en dominios de Active Directory.
Ni el hash de NT ni el hash de LM se cifran con sal. El cifrado con sal es un proceso que combina la contraseña con un valor numérico aleatorio (la sal) antes de calcular la función unidireccional.
Contraseñas almacenadas en Active Directory
Las contraseñas se almacenan en reposo en varios atributos de la base de datos de Active Directory (archivo NTDS.DIT). Estos atributos se enumeran en la tabla siguiente:
Atributo de Active Directory | Contenido |
---|---|
unicodePwd | Hash de NT cifrado |
dbcsPwd | Hash de LM cifrado |
ntPwdHistory | Hashes de NT cifrados: historial de contraseñas |
lmPwdHistory | Hashes de LM cifrados: historial de contraseñas |
supplementalCredentials | Claves Kerberos, WDigest, etc. |
Nota
El almacenamiento de hashes de LM está deshabilitado de manera predeterminada desde Windows Vista y Windows Server 2008.
Cuando se almacena en el archivo DIT, el hash de NT está protegido por dos capas de cifrado. En Windows Server 2016/Windows 10 y versiones posteriores, primero se cifra con DES para obtener compatibilidad con versiones anteriores y, a continuación, con CNG BCrypt AES-256 (consulta CNG BCRYPT_AES_ALGORITHM). Las versiones anteriores de Windows cifran los hashes de NT con dos capas de cifrado DES + RC4.
Para obtener más información sobre las credenciales complementarias, consulte MS-SAMR: supplementalCredentials y Estructuras de credenciales complementarias.
Contraseñas almacenadas en la SAM local
En los miembros del dominio y las estaciones de trabajo, los hashes de contraseña de cuenta de usuario local se almacenan en una base de datos local del Administrador de cuentas de seguridad (SAM) ubicada en el registro. Se cifran con los mismos algoritmos de cifrado y hash que Active Directory. Las contraseñas del atributo supplementalCredentials de las cuentas de usuario local también se almacenan en la base de datos SAM local desde Windows Server 2016.
Credenciales almacenadas en caché
Windows también almacena un comprobador de contraseñas en los miembros del dominio cuando un usuario del dominio inicia sesión en ese miembro de dominio. Este comprobador se puede usar para autenticar a un usuario de dominio si el equipo no puede acceder al controlador de dominio. El comprobador de contraseñas también se llama normalmente una credencial almacenada en caché. Se calcula tomando el hash de NT, concatenando el nombre de usuario y, a continuación, aplicando un hash al resultado mediante la función hash MD4.
Funcionamiento de las contraseñas en Windows
En Windows y muchos otros sistemas operativos, un método para autenticar la identidad de un usuario es usar una frase de contraseña o una contraseña secretas.
Se recomienda usar la autenticación multifactor segura, como una tarjeta inteligente, FIDO y Windows Hello para empresas. Sin embargo, la autenticación de contraseña sigue siendo necesaria en algunos escenarios.
La protección del entorno de red requiere que todos los usuarios utilicen contraseñas seguras. Esto ayuda a evitar la amenaza de un usuario malintencionado que adivina una contraseña débil, ya sea mediante métodos manuales o mediante herramientas, para conseguir las credenciales de una cuenta de usuario en peligro. Esto es especialmente cierto para las cuentas administrativas. Cuando se cambia una contraseña compleja con regularidad, se reduce la probabilidad de que se produzca un ataque de contraseña con éxito.
La configuración de la directiva de contraseñas controla la complejidad y la duración de las contraseñas. Las directivas de contraseñas afectan a las contraseñas de Windows, no necesariamente a las contraseñas de características.
La capacidad de los usuarios de modificar sus contraseñas se rige por las directivas de contraseñas y las interfaces disponibles. Por ejemplo, mediante el Escritorio seguro, los usuarios pueden cambiar su contraseña en cualquier momento en función de las directivas de contraseñas administradas por el administrador del sistema o el administrador del dominio. Las características como el almacén de credenciales de Windows, BitLocker y el Sistema de cifrado de archivos permiten a los usuarios modificar las contraseñas específicas de esa característica.
Cómo se usan las contraseñas en Windows
Cuando un usuario inicia sesión, la contraseña que escribe el usuario se convierte en ambos tipos de funciones unidireccionales y se mantiene en memoria mediante el proceso del Servicio del subsistema de autoridad de seguridad local (LSASS). Si el usuario utiliza una cuenta local para la autenticación, la OWF de NT se compara con el hash de NT almacenado localmente y, si coinciden los dos, se inicia la sesión del usuario. Si el usuario se autentica en un dominio de Active Directory mediante un nombre de host para acceder a un recurso, el hash de NT se usa en un inicio de sesión de Kerberos en el Centro de distribución de claves (KDC), que suele ser el controlador de dominio.
No se puede usar Kerberos en las siguientes situaciones:
- Autenticación en un dominio que ejecuta solo Windows NT 4.0 o versiones anteriores
- Acceso a un recurso de un miembro de un dominio de Active Directory mediante una dirección IP en lugar de un nombre de host
- Acceso a un recurso en un equipo que no es miembro de un dominio de Active Directory
- Acceso a un recurso en un equipo que es miembro de un dominio de Active Directory, pero que no es de confianza para su dominio
- Acceso a cualquier recurso de un equipo en ejecución que no admite Kerberos
En estas situaciones, el proceso de autenticación usa dos protocolos diferentes, llamados LAN Manager y NTLM. El proceso comienza con el cliente que solicita un desafío desde el servidor de autenticación. Una vez recibido el desafío, el cliente calcula una respuesta a este desafío. Para ello, primero se rellenan los dos hashes de la contraseña con valores NULL hasta 168 bits. A continuación, los 168 bits de cada hash se dividen en tres claves DES de 56 bits. Después, las seis claves DES se usan para cifrar el desafío. Los tres textos cifrados generados mediante el hash de LM se concatenan y se convierten en la respuesta de LAN Manager. Los tres textos cifrados generados mediante el hash de NT se concatenan y se convierten en la respuesta de NTLM.
Las funciones empleadas para calcular la respuesta se pueden modificar mediante la configuración Nivel de compatibilidad de LM en la configuración de la directiva de grupo Seguridad de red: nivel de autenticación de LAN Manager. Si ese valor se establece en 1 o inferior, el cliente enviará las respuestas originales de LAN Manager y NTLM. Si se establece en 2, solo se envía la respuesta de NTLM. Si se establece en 3 o superior, se usa una nueva versión de ambos protocolos. La versión de NTLM se llama NTLMv2. La versión de LAN Manager se conoce a menudo como LMv2. Ambos protocolos usan el hash de NT para calcular la respuesta y usan un desafío del lado cliente, ya sea en lugar de o además del desafío del servidor. Además, si la configuración Nivel de compatibilidad de LM está establecida en 1 o superior, la respuesta de NTLM tiene una marca de tiempo para ayudar a evitar ataques de reproducción. Para obtener información sobre la configuración Nivel de compatibilidad de LM, consulte Seguridad de red: nivel de autenticación de LAN Manager.
Contraseñas seguras
Las contraseñas ofrecen la primera línea de defensa contra el acceso no autorizado a la organización. A partir de Windows Server 2003, Windows comprueba la complejidad de la contraseña de la cuenta de administrador durante la configuración del sistema operativo. Si la contraseña está en blanco o no cumple los requisitos de complejidad, el cuadro de diálogo Configuración de Windows le pide que cree una contraseña segura para la cuenta de administrador. Si deja esta contraseña en blanco, no podrá acceder a esta cuenta mediante la red.
Las contraseñas débiles proporcionan a los atacantes un acceso fácil a los equipos y la red, mientras que las contraseñas seguras son considerablemente más difíciles de descifrar. En la tabla siguiente, se comparan las contraseñas débiles y seguras.
Contraseña débil | Contraseña segura |
---|---|
En blanco | Tiene al menos siete caracteres de longitud. |
Contiene información fácil de detectar o conocer, como el nombre de usuario o el nombre de dominio. | Contiene información "secreta" o aleatoria. |
Es similar a las contraseñas anteriores. | Presenta diferencias notables con respecto a contraseñas anteriores. |
Contiene una palabra de diccionario completa. | Contiene una combinación de los siguientes caracteres: - Letras mayúsculas - Letras minúsculas - Números - Símbolos, incluidos los espacios |
Un ejemplo de contraseña segura es J*p2leO4>F.
Una contraseña puede cumplir la mayoría de los criterios de una contraseña segura, pero seguir siendo bastante débil. Por ejemplo, Hello2U! es una contraseña relativamente débil, aunque cumple la mayoría de los criterios de una contraseña segura y también cumple los requisitos de complejidad de la directiva de contraseñas. H!elZl2o es una contraseña segura porque la palabra de diccionario se intercala con símbolos, números y otras letras. Es importante educar a los usuarios sobre las ventajas de usar contraseñas seguras y enseñarles cómo crear contraseñas que sean realmente seguras.
Puede crear contraseñas que contengan caracteres del juego de caracteres ANSI extendido. El uso de caracteres ANSI extendidos aumenta el número de caracteres que puede elegir al crear una contraseña. Como resultado, el software de descifrado de contraseñas puede tardar más tiempo en descifrar las contraseñas que contienen estos caracteres ANSI extendidos que para descifrar otras contraseñas. Antes de usar caracteres ANSI extendidos en la contraseña, pruébelos exhaustivamente para asegurarse de que las contraseñas que contienen caracteres ANSI extendidos son compatibles con las aplicaciones que usa la organización. Tenga especial cuidado con el uso de caracteres ASCII extendidos en las contraseñas si la organización utiliza varios sistemas operativos. Por ejemplo, estos sistemas se pueden estandarizar en ISO-8859-15. La implementación real del protocolo en Windows suele usar UNICODE o UTF8 en lugar de codificación ANSI real.
Algunos ejemplos de contraseñas que contienen caracteres del juego de caracteres ANSI extendidos son kUµ!¶0o y Wf©$0k#»g¤5ªrd.
Frases de contraseña en Windows
Una frase de contraseña es una forma diferente de contraseña basada en tokens en la que los tokens son palabras en lugar de símbolos de un juego de caracteres. Un ejemplo de frase de contraseña es una frase que contiene caracteres especiales, números, letras mayúsculas y minúsculas. Las diferencias principales entre las frases de contraseña y las contraseñas son:
- Una frase de contraseña suele tener espacios; las contraseñas no.
- Una frase de contraseña es mucho más larga que la gran mayoría de las palabras, y, más importante, más larga que cualquier cadena aleatoria de letras que una persona normal pueda recordar.
Las frases de contraseña que se ajustan al límite de caracteres establecido en la directiva suelen ser más difíciles de descifrar que las contraseñas porque contienen más caracteres. El hash de LM y el de NT almacenan la contraseña o la frase de contraseña, y el hash de LM es el más débil de los dos.
Hay varias maneras de asegurarse de que no se almacene el hash de LM; una de ellas es usar contraseñas o frases de contraseña de más de 14 caracteres. También puede usar la configuración de directiva de grupo Seguridad de red: no almacenar el valor del hash de LAN Manager en el próximo cambio de contraseña. El uso de esta configuración de directiva desactiva globalmente el almacenamiento de los hashes de LM para todas las cuentas. El cambio surtirá efecto la próxima vez que se cambie la contraseña. Dado que el efecto de la directiva no es inmediato, no observará inmediatamente los posibles problemas de interoperabilidad causados por no almacenar hashes de LM.
Directivas de contraseñas locales disponibles en Windows
Puede implementar una configuración de directiva de contraseñas que aplique los requisitos de complejidad de la contraseña. Para obtener más información sobre esta configuración de directiva, consulte Las contraseñas deben cumplir los requisitos de complejidad. Para obtener información sobre cómo aplicar una directiva de contraseñas, consulte Aplicar o modificar una directiva de contraseña. Para obtener información sobre todas las configuraciones de directivas de contraseñas disponibles, consulte Directiva de contraseñas.
Directiva de contraseñas pormenorizada disponible mediante Active Directory Domain Services (AD DS)
A partir de Windows Server 2008, puede usar directivas de contraseñas pormenorizadas para establecer varias directivas de contraseñas y aplicar diferentes directivas de bloqueo de cuenta y restricciones de contraseña a diferentes conjuntos de usuarios de un solo dominio. Por ejemplo, para aumentar la seguridad de las cuentas con privilegios, puede aplicar una configuración más estricta a las cuentas con privilegios y, a continuación, aplicar una configuración menos estricta a las cuentas de otros usuarios. En algunos casos, probablemente quiera aplicar una directiva de contraseñas especial para las cuentas cuyas contraseñas están sincronizadas con otros orígenes de datos.
Para almacenar las directivas de contraseñas pormenorizadas, existen dos nuevas clases de objeto en el esquema de AD DS:
- Contenedor de configuración de contraseñas
- Configuración de contraseña
Para obtener más información sobre estas directivas, consulte AD DS: directivas de contraseñas pormenorizadas.