DPAPI (Interfaz de programación de aplicaciones de protección de datos) es una sencilla interfaz de programación de aplicaciones criptográficas 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 puede permitir el cifrado simétrico de cualquier tipo de datos; en la práctica, su uso principal en el sistema operativo Windows es realizar un 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 "administración de claves", en parte, cómo almacenar de forma segura la clave de descifrado. Si la clave se almacena en texto sin formato , cualquier usuario que pueda acceder a la clave podrá acceder a los datos cifrados. Si la clave se va a cifrar, se necesita otra clave, y así sucesivamente. DPAPI permite a los desarrolladores cifrar claves utilizando una clave simétrica derivada de los secretos de inicio de sesión del usuario o, en el caso del cifrado del sistema, utilizando los secretos 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, donde {SID} es el identificador de seguridad de ese usuario. La clave DPAPI se almacena en el mismo archivo que la clave maestra que protege las claves privadas de los usuarios. Suele ser 64 bytes de datos aleatorios.
Propiedades de seguridad
DPAPI no almacena ningún dato persistente por sí mismo; en su lugar, simplemente recibe texto sin formato 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 del riesgo, que en la mayoría de los escenarios de ataque depende en gran medida de la seguridad de las credenciales del usuario final. Una clave principal de cifrado / descifrado se deriva de la contraseña del usuario mediante la función PBKDF2 . [2] Los objetos grandes binarios de datos particulares se pueden cifrar de manera que se agregue sal y / o se requiera una contraseña externa solicitada por el usuario (también conocida como "Protección de clave segura"). El uso de un salt es una opción por implementación, es decir, bajo el control del desarrollador de la aplicación, y no es controlable por el usuario final o 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 de IIS utilicen DPAPI.
Uso de DPAPI por software de Microsoft
Si bien no se implementó universalmente en todos los productos de Microsoft, el uso de DPAPI por los productos de Microsoft ha aumentado con cada versión sucesiva de Windows. Sin embargo, muchas aplicaciones de Microsoft y desarrolladores de terceros todavía prefieren usar su propio enfoque de protección o solo recientemente han cambiado para usar DPAPI. Por ejemplo, las versiones 4.0-6.0 de Internet Explorer , Outlook Express y MSN Explorer utilizaron la API de almacenamiento protegido (PStore) anterior para almacenar las 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
- Cifrar el sistema de archivos en Windows 2000 y posterior
- 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
- Windows Mail y Windows Live Mail
- Outlook para S / MIME
- Servicios de información de Internet para SSL / TLS
- Cliente de Windows Rights Management Services v1.1 y posterior
- Windows 2000 y posterior para EAP / TLS ( autenticación VPN ) y 802.1x ( autenticación WiFi )
- Windows XP y posterior para nombres de usuario y contraseñas almacenados [5] (también conocido como Credential Manager)
- .NET Framework 2.0 y posterior para System.Security.Cryptography.ProtectedData [6]
- Autenticación de Microsoft.Owin (Katana) de forma predeterminada cuando se realiza el alojamiento propio (incluida la autenticación de cookies y 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ña de Windows - Análisis de clave maestra DPAPI" . Passcape.com . Consultado el 6 de mayo de 2013 .
- ^ Mikhael Felker (8 de diciembre de 2006). "Preocupaciones sobre la gestión de contraseñas con IE y Firefox, parte uno" . SecurityFocus.com , Symantec.com . Consultado el 28 de marzo de 2010 .
- ^ "Jerarquía de cifrado" . Msdn.microsoft.com . Consultado el 14 de octubre de 2017 .
- ^ "Novedades en seguridad para Windows XP Professional y Windows XP Home Edition" . Technet.microsoft.com . 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)" . Consultado el 26 de noviembre de 2018 .
enlaces externos
- Informe técnico de la API de protección de datos de Windows (DPAPI) de NAI Labs
- Cifrado de datos con DPAPI
- Cómo: usar DPAPI (almacén de usuarios) de ASP.NET 1.1 con servicios empresariales
- System.Security.Cryptography.ProtectedData en .NET Framework 2.0 y posterior
- Discusión sobre el uso de MS BackupKey Remote Protocol por DPAPI para proteger los secretos del usuario
- La PStore de Windows