Técnicas de mitigación de amenazas

Hay una serie de técnicas de mitigación de amenazas disponibles que puede usar para proteger mejor las contraseñas. Estas técnicas se implementan mediante una o varias de las siguientes tecnologías principales.

Tecnología Descripción
Criptografía: Próxima generación (CNG) CNG es la API criptográfica preferida para Windows desarrollo. Admite algoritmos modernos, aislamiento de claves y agilidad criptográfica. Para obtener más información, consulte Características de CNG.
Listas de control de acceso Una lista de control de acceso (ACL) es una lista de protecciones de seguridad que se aplica a un objeto . Un objeto puede ser un archivo, un proceso, un evento o cualquier otra cosa que tenga un descriptor de seguridad. Para obtener más información sobre las ACL, consulte listas de Access Control.
API de Protección de Datos (DPAPI) DPAPI proporciona funciones para cifrar y descifrar datos confidenciales enlazados a la cuenta de usuario o máquina: CryptProtectData, CryptUnprotectData, CryptProtectMemory y CryptUnprotectMemory.
Administrador de credenciales de Windows Proporciona almacenamiento seguro para las credenciales de usuario (contraseñas, certificados y otros secretos). Use CredWrite y CredRead para el acceso mediante programación. También se puede acceder a través de CredUIPromptForWindowsCredentials.

Note

CryptoAPI (las funciones heredadas Crypt* ) sigue siendo compatible con versiones anteriores, pero el nuevo código debe usar las API de CNG (Criptografía: Próxima generación) para la compatibilidad con algoritmos modernos y una arquitectura de seguridad mejorada.

Las siguientes técnicas de mitigación de amenazas usan una o varias de las tecnologías anteriores.

Obtención de contraseñas del usuario

Cuando permita que el usuario configure una contraseña, obligue el uso de contraseñas seguras. Por ejemplo, requiere que las contraseñas sean una longitud mínima, como ocho caracteres o más. Las contraseñas también deben ser necesarias para incluir letras mayúsculas y minúsculas, números y otros caracteres de teclado, como el signo de dólar ($), el signo de exclamación (!) o mayor que (>).

Después de obtener una contraseña, úsela rápidamente (con el menor código posible) y, a continuación, borre todos los restos de la contraseña. Esto minimiza el tiempo disponible para un intruso para "interceptar" la contraseña. El equilibrio con esta técnica es la frecuencia con la que se debe recuperar la contraseña del usuario; sin embargo, el principio debe emplearse siempre que sea posible. Para obtener información sobre cómo obtener correctamente las contraseñas, consulte Preguntar al usuario para obtener credenciales.

Evite proporcionar opciones de interfaz de usuario de "recordar mi contraseña". A menudo, los usuarios demandarán tener esta opción. Si debe proporcionarla, asegúrese de que la contraseña se guarda de forma segura. Para obtener información, consulte la sección Almacenamiento de contraseñas, más adelante en este tema.

Limitar los intentos de entrada de contraseña. Después de un número determinado de intentos sin éxito, bloquee al usuario durante un determinado período de tiempo. Opcionalmente, alargar el tiempo de respuesta de cada intento por encima de un máximo. Esta técnica tiene como objetivo derrotar un ataque de adivinación.

Almacenar contraseñas

Warning

Nunca almacene contraseñas en texto no cifrado (sin cifrar): no en archivos, el registro, la configuración o el código fuente. El cifrado de contraseñas aumenta significativamente su seguridad.

Para obtener información sobre cómo almacenar contraseñas cifradas, vea CryptProtectData. Para obtener información sobre el cifrado de contraseñas en memoria, consulte CryptProtectMemory. Almacene las contraseñas en cuantos lugares como sea posible. Cuantos más lugares almacene una contraseña, mayor será la posibilidad de que un intruso lo encuentre. Nunca almacene contraseñas en una página web o en un archivo basado en web. Almacenar contraseñas en una página web o en un archivo basado en web permite ponerlas en peligro fácilmente.

Después de cifrar una contraseña y almacenarla, use ACL seguras para limitar el acceso al archivo. Como alternativa, puede almacenar contraseñas y claves de cifrado en dispositivos extraíbles. Almacenar contraseñas y claves de cifrado en un medio extraíble, como una tarjeta inteligente, ayuda a crear un sistema más seguro. Después de recuperar una contraseña para una sesión determinada, la tarjeta se puede quitar, lo que elimina la posibilidad de que un intruso pueda obtener acceso a ella.