API de protección de datos

De Wikipedia, la enciclopedia libre
Ir a la navegación Ir a la búsqueda

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]

Referencias[editar]

  1. . 2010.  Falta el |título= (ayuda)
  2. «Windows Password Recovery - DPAPI Master Key analysis». Passcape.com. Consultado el 6 de mayo de 2013. 
  3. Mikhael Felker (December 8, 2006). «Password Management Concerns with IE and Firefox, part one». SecurityFocus.com, Symantec.com. Consultado el 28 de marzo de 2010. 
  4. «Encryption Hierarchy». Msdn.microsoft.com. Consultado el 14 October 2017. 
  5. «What's New in Security for Windows XP Professional and Windows XP Home Edition». Technet.microsoft.com. Consultado el 14 October 2017. 
  6. «ProtectedData Class (System.Security.Cryptography)». Msdn2.microsoft.com. Consultado el 14 October 2017. 
  7. «CookieAuthenticationOptions.TicketDataFormat Property (Microsoft.Owin.Security.Cookies)». Consultado el 15 de enero de 2015. 
  8. «OAuthAuthorizationServerOptions.AccessTokenFormat Property (Microsoft.Owin.Security.OAuth)». Consultado el 26 de noviembre de 2018. 

Enlaces externos[editar]