API de protección de datos
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 un 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 usuario o sistema secreto 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 un texto sin formato, cualquier usuario que pueda acceder a la clave puede 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 directorio %APPDATA%\Microsoft\Protect\{SID}
, 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
[editar]DPAPI no almacena ningún dato persistente por sí mismo; en su lugar, simplemente recibe un texto sin formato y devuelve un 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 binarios grandes 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 una sal 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
[editar]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 (EFS) 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
- Windows Mail y Windows Live Mail
- Outlook para S/MIME
- Servicios de Información del internet para SSL/TLS
- Los Servicios de administración de derechos de Active Directory de Windows cliente v1.1 y posteriores
- Windows 2000 y posteriores para EAP/TLS (VPN autentificación) y 802.1x (WiFi autentificación)
- Windows XP y posteriores para nombres de usuario y contraseñas almacenados (aka Credential Director)[5]
- .Marco NETO 2.0 y posterior para System Security Cryptography ProtectedData[6]
- Autentificación de Microsoft.Owin (Katana) de forma predeterminada cuando se realiza un alojamiento propio (incluyendo la autentificación de cookies y tokens OAuth)[7][8]
Referencias
[editar]- ↑ . 2010. Falta el
|título=
(ayuda) - ↑ «Windows Password Recovery - DPAPI Master Key analysis». Passcape.com. Consultado el 6 de mayo de 2013.
- ↑ Mikhael Felker (8 de diciembre de 2006). «Password Management Concerns with IE and Firefox, part one». SecurityFocus.com, Symantec.com. Consultado el 28 de marzo de 2010.
- ↑ «Encryption Hierarchy». Msdn.microsoft.com. Consultado el 14 de octubre de 2017.
- ↑ «What's New in Security for Windows XP Professional and Windows XP Home Edition». Technet.microsoft.com. Consultado el 14 de octubre de 2017.
- ↑ «ProtectedData Class (System.Security.Cryptography)». Msdn2.microsoft.com. Consultado el 14 de octubre de 2017.
- ↑ «CookieAuthenticationOptions.TicketDataFormat Property (Microsoft.Owin.Security.Cookies)». Consultado el 15 de enero de 2015.
- ↑ «OAuthAuthorizationServerOptions.AccessTokenFormat Property (Microsoft.Owin.Security.OAuth)». Consultado el 26 de noviembre de 2018.
Enlaces externos
[editar]- Protección de datos de Windows API (DPAPI) papel blanco por NAI Laboratorios
- Encriptación de dato con DPAPI Archivado el 18 de marzo de 2008 en Wayback Machine.
- Uso DPAPI para encriptar y decrypt dato Archivado el 1 de julio de 2016 en Wayback Machine.
- Cómo A: Uso DPAPI (Tienda de Usuario) de ASP.NETO 1.1 con Servicios de Empresa
- Sistema.Seguridad.Criptografía.ProtectedData En .Marco NETO 2.0 y más tarde
- Discusión del uso de SEÑORA BackupKey Protocolo Remoto por DPAPI para proteger secretos de usuario
- El Windows PStore