2009-01-14 15 views
46

¿Hay un equivalente de OS X Keychain, utilizado para almacenar contraseñas de usuario, en Windows? Lo usaría para guardar la contraseña del usuario para un servicio web que utiliza mi software (de escritorio).¿Windows equivalente a la llave de OS X?

De las respuestas a esta pregunta relacionada (Protecting user passwords in desktop applications (Rev 2)) y multitude of third party password storage tools disponible, asumo que tal cosa no existe-- ¿Tengo que pedir la contraseña cada vez que accedo al servicio web, o solo almacenarlo ofuscado?

Respuesta

14

El equivalente "tradicional" de Windows sería el subsistema de Almacenamiento protegido, utilizado por IE (anterior a IE 7), Outlook Express y algunos otros programas. Creo que está encriptada con su contraseña de inicio de sesión, lo que previene algunos ataques fuera de línea, pero una vez que haya iniciado sesión, cualquier programa que quiera puede leerla. (Consulte, por ejemplo, NirSoft's Protected Storage PassView.)

Windows también proporciona CryptoAPI y la API de protección de datos que podría ayudar. De nuevo, sin embargo, no creo que Windows haga nada para evitar que los procesos que se ejecutan bajo la misma cuenta vean las contraseñas de los demás.

Parece que el libro Mechanics of User Identification and Authentication proporciona más detalles sobre todo esto.

Eclipse (a través de su característica SecureStorage) implementa algo como esto, si le interesa ver cómo lo hace otro software.

+1

Almacenamiento protegido ha quedado obsoleto después de XP/2k3 y es de solo lectura en Windows Vista y Server 2008: http://msdn.microsoft.com/en-us/library/bb432403%28v=vs. 85% 29.aspx – Spig

+0

Guau, ¿la seguridad realmente es tan difícil en Windows? – Geremia

14

En realidad, mirando a través de MSDN, las funciones que recomiendan usar (en lugar de almacenamiento protegido) son:

CryptProtectData y CryptUnprotectData

El enlace para CryptProtectData está en:

http://msdn.microsoft.com/en-us/library/aa380261(v=VS.85).aspx

+0

no * mira * así protege las aplicaciones separadas de la lectura de los datos de los demás ... – rogerdpack

+0

Pasar 'pOptionalEntropy' puede proporcionar cierta protección de otras aplicaciones que leen los datos de tus aplicaciones cuando se ejecutan en el mismo contexto. – Spig

13

Windows 8 tiene una idea de un llavero llamado Password Vault. Las aplicaciones de Windows Runtime (Modern/Metro) así como las aplicaciones de escritorio administradas pueden hacer uso de ella. De acuerdo con la documentación:

Las aplicaciones y servicios no tienen acceso a las credenciales asociadas con otras aplicaciones o servicios.

Ver How to store user credentials en MSDN.

Pre-Windows 8, Data Protection API (DPAPI) es el equivalente más cercano a un llavero. Los datos arbitrarios se pueden cifrar utilizando esta API, aunque el almacenamiento de los datos cifrados corresponde al desarrollador. En última instancia, los datos se cifran con la contraseña del usuario actual; sin embargo, se puede incluir la "entropía opcional" suministrada por el usuario o el desarrollador para proteger aún más los datos de otros programas o usuarios. Los datos también se pueden descifrar en diferentes computadoras en un dominio.

DPAPI se puede acceder a través de llamadas nativas a CryptProtectData y CryptUnprotectData funciones de Crypt32.dll o por medio de clases de .NET Framework ProtectedData, que es una envoltura característica limitada porque las primeras funciones.

Más información de la que nunca necesita saber sobre DPAPI está disponible en el artículo de Passcape DPAPI Secrets. Security analysis and data recovery in DPAPI.

-9

Mira a Roboform (http://www.roboform.com/). Yo uso esto todo el tiempo. También hay un programa gratuito en SourceForge.net.Aquí hay uno en CNET (http://download.cnet.com/Password-Keychain/3000-2381_4-10072470.html). Solo algunos de los (probablemente) cientos de programas que existen. :-)

+0

Esto realmente no responde a la pregunta: busca las API disponibles en el nivel del sistema operativo que pueden ser utilizadas por las aplicaciones, no por los usuarios finales como Roboform. – duskwuff

+0

@duskwuff: ¿Podría dirigir su atención a https://en.wikipedia.org/wiki/Keychain_%28software%29 y https://en.wikipedia.org/wiki/List_of_password_managers que habla de qué, exactamente, el sistema operativo El programa X Keychain es y cómo funciona. Tenga en cuenta que NO hablan de una API en ninguna parte de esas páginas. Solo sobre el PROGRAMA que se llama Llavero OS X. –

+0

Keychain es un servicio de nivel de sistema operativo utilizado por muchas aplicaciones, no una aplicación en sí misma. El artículo de Wikipedia no es del todo claro sobre esto, pero no hay un solo programa llamado "Llavero" o "Llavero OS X". (Existe la "Herramienta de llavero", pero, como su nombre lo indica, no es más que una utilidad para administrar la base de datos subyacente de Keychain, no una representación del servicio como un todo.) – duskwuff

Cuestiones relacionadas