La interfaz de programación de aplicaciones de protección de datos ( DPAPI ) es una interfaz de programación de aplicaciones criptográficas sencilla disponible como componente integrado en Windows 2000 y versiones posteriores de los sistemas operativos Microsoft Windows . En teoría, la API de protección de datos permite el cifrado simétrico de cualquier tipo de datos; en la práctica, su uso principal en el sistema operativo Windows es realizar el cifrado simétrico de claves privadas asimétricas, utilizando un secreto de usuario o del sistema como una contribución significativa de entropía. Un análisis detallado del funcionamiento interno de DPAPI fue publicado en 2011 por Bursztein et al. [ 1 ].
Para casi todos los criptosistemas , uno de los desafíos más difíciles es la gestión de claves , es decir, cómo almacenar de forma segura la clave de descifrado. Si la clave se almacena en texto plano , cualquier usuario que pueda acceder a ella podrá acceder a los datos cifrados. Si se va a cifrar la clave, se necesita otra clave, y así sucesivamente. DPAPI permite a los desarrolladores cifrar claves utilizando una clave simétrica derivada de las credenciales de inicio de sesión del usuario o, en el caso del cifrado del sistema, utilizando las credenciales de autenticación de dominio del sistema.
Las claves DPAPI utilizadas para cifrar las claves RSA del usuario se almacenan en el %APPDATA%\Microsoft\Protect\{SID}directorio {SID}, donde {SID} es el identificador de seguridad de dicho usuario. La clave DPAPI se guarda en el mismo archivo que la clave maestra que protege las claves privadas del usuario. Generalmente, consta de 64 bytes de datos aleatorios.
Propiedades de seguridad
DPAPI no almacena ningún dato persistente por sí mismo; en cambio, simplemente recibe texto plano y devuelve texto cifrado (o viceversa).
La seguridad de DPAPI se basa en la capacidad del sistema operativo Windows para proteger la clave maestra y las claves privadas RSA contra vulneraciones, lo cual, en la mayoría de los escenarios de ataque, depende en gran medida de la seguridad de las credenciales del usuario final. La clave principal de cifrado/descifrado se deriva de la contraseña del usuario mediante la función PBKDF2 . [ 2 ] Ciertos objetos binarios de gran tamaño pueden cifrarse añadiendo un valor aleatorio ( salt ) o requiriendo una contraseña externa solicitada por el usuario (también conocida como "Protección de clave fuerte"). El uso de un valor aleatorio es una opción por implementación ( es decir, está bajo el control del desarrollador de la aplicación ) y no puede ser controlada por el usuario final ni por el administrador del sistema.
Se puede otorgar acceso delegado a las claves mediante el uso de un objeto COM+ . Esto permite que los servidores web IIS utilicen DPAPI.
claves de copia de seguridad de Active Directory
Cuando un equipo pertenece a un dominio, DPAPI dispone de un mecanismo de respaldo que permite la desprotección de datos en caso de pérdida de la contraseña del usuario, denominado "Roaming de credenciales". Al instalar un nuevo dominio en un controlador de dominio, se genera un par de claves pública y privada, asociadas a DPAPI. Cuando se genera una clave maestra en una estación de trabajo cliente, este se comunica mediante una llamada RPC autenticada con un controlador de dominio para obtener una copia de la clave pública del dominio. El cliente cifra la clave maestra con la clave pública del controlador de dominio. Finalmente, almacena esta nueva clave maestra de respaldo en su directorio AppData, al igual que en el almacenamiento tradicional de claves maestras.
Uso de DPAPI por parte del software de Microsoft
Aunque no se implementa universalmente en todos los productos de Microsoft, el uso de DPAPI por parte de estos productos ha aumentado con cada versión sucesiva de Windows. Sin embargo, muchas aplicaciones de Microsoft y de desarrolladores externos aún prefieren usar su propio método de protección o solo recientemente han adoptado DPAPI. Por ejemplo, las versiones 4.0 a 6.0 de Internet Explorer , Outlook Express y MSN Explorer utilizaban la antigua API de Almacenamiento Protegido (PStore) para almacenar credenciales guardadas, como contraseñas, etc. Internet Explorer 7 ahora protege las credenciales de usuario almacenadas mediante DPAPI. [ 3 ]
- Contraseña de imagen, PIN y huella digital en Windows 8
- Cifrado del sistema de archivos en Windows 2000 y versiones posteriores
- Cifrado de clave maestra del servicio de cifrado transparente de datos (TDE) de SQL Server [ 4 ]
- Internet Explorer 7 , tanto en la versión independiente disponible para Windows XP como en las versiones integradas disponibles en Windows Vista y Windows Server 2008.
- Microsoft Edge
- Correo de Windows y correo en vivo de Windows
- Perspectivas para S/MIME
- Servicios de información de Internet para SSL/TLS
- Cliente de Servicios de administración de derechos de Windows v1.1 y versiones posteriores
- Windows 2000 y versiones posteriores para EAP/TLS ( autenticación VPN ) y 802.1x ( autenticación WiFi ).
- Windows XP y versiones posteriores para nombres de usuario y contraseñas almacenados [ 5 ] (también conocido como Administrador de credenciales)
- .NET Framework 2.0 y posterior para System.Security.Cryptography.ProtectedData [ 6 ]
- Autenticación de Microsoft.Owin (Katana) por defecto al autoalojar (incluida la autenticación por cookies y los tokens OAuth ) [ 7 ] [ 8 ]
Referencias
- ↑ Bursztein, Elie; Picod, Jean Michel (2010). "Recuperación de secretos de Windows y certificados EFS sin conexión" . WoOT 2010. Usenix.
- ↑ "Recuperación de contraseñas de Windows: análisis de la clave maestra DPAPI" . Passcape.com . Consultado el 6 de mayo de 2013 .
- ↑ Mikhael Felker (8 de diciembre de 2006). "Problemas con la gestión de contraseñas en IE y Firefox, primera parte" . SecurityFocus.com , Symantec.com . Consultado el 28 de marzo de 2010 .
- ↑ "Jerarquía de cifrado" . Msdn.microsoft.com . Abril de 2012. Consultado el 14 de octubre de 2017 .
- ↑ "Novedades de seguridad para Windows XP Professional y Windows XP Home Edition" . Technet.microsoft.com . 11 de septiembre de 2009. Consultado el 14 de octubre de 2017 .
- ↑ "Clase ProtectedData (System.Security.Cryptography)" . Msdn2.microsoft.com . Consultado el 14 de octubre de 2017 .
- ↑ "Propiedad CookieAuthenticationOptions.TicketDataFormat (Microsoft.Owin.Security.Cookies)" . Consultado el 15 de enero de 2015 .
- ↑ "Propiedad OAuthAuthorizationServerOptions.AccessTokenFormat (Microsoft.Owin.Security.OAuth)" . 27 de octubre de 2015. Consultado el 26 de noviembre de 2018 .
Enlaces externos
- "Le fonctionnement de DPAPI par Processus Thief" (en francés). 2022-10-20. Archivado desde el original el 20 de octubre de 2022.
- Documento técnico de NAI Labs sobre la API de protección de datos de Windows (DPAPI).
- Cifrado de datos con DPAPI. Archivado el 18 de marzo de 2008 en Wayback Machine.
- Cómo usar DPAPI (User Store) desde ASP.NET 1.1 con Enterprise Services
- System.Security.Cryptography.ProtectedData en .NET Framework 2.0 y versiones posteriores
- Análisis del uso del protocolo remoto MS BackupKey por parte de DPAPI para proteger los secretos de los usuarios.
- La tienda de Windows
- Interfaces de programación de aplicaciones de Microsoft
- Software criptográfico
- Tecnología de seguridad de Microsoft Windows
- Windows 2000