2011-05-17 10 views
13

Microsoft Windows 2000 y versiones posteriores exponen el Data Protection API (DPAPI) que cifra los datos para un contexto por usuario o por sistema. La persona que llama no proporciona una clave con la cual encriptar los datos. Por el contrario, los datos se cifran con una clave derivada de las credenciales del usuario o del sistema.Equivalente a la API de protección de datos en Linux

Esta API está convenientemente expuesto en .NET a través de la clase ProtectedData:

// Encrypts the data in a specified byte array and returns a byte array 
// that contains the encrypted data. 
public static byte[] Protect(
    byte[] userData, 
    byte[] optionalEntropy, 
    DataProtectionScope scope 
) 

// Decrypts the data in a specified byte array and returns a byte array 
// that contains the decrypted data. 
public static byte[] Unprotect(
    byte[] encryptedData, 
    byte[] optionalEntropy, 
    DataProtectionScope scope 
) 

¿Existe una API equivalente en Linux?Una ventaja sería que se integra convenientemente con Java.

¿Cuáles son mis alternativas si no hay una?

Respuesta

2

No parece más (o menos) avanzado que PGP, o Pretty Good Privacy. Hay API disponibles para PGP, y la que recuerdo que otros hablaron amablemente es Bouncy Castle.

Aquí hay un example of how someone used Bouncy Castle.

Es posible que haya mejores API o soluciones disponibles, según sus necesidades específicas.

+0

¿PGP utiliza credenciales de usuario o sistema? Tenía entendido que para PGP debe proporcionar su propio par de claves pública/privada. –

+0

Las credenciales en DPAPI son solo un par de claves públicas/privadas de RSA, a las que considera que la clave a la que pertenece (sistema o usuario) es su propia percepción, no una función de la clave. –

+2

@EdwinBuck "Dado que DPAPI se centra en brindar protección a los usuarios y requiere una contraseña para proporcionar esta protección, lógicamente usa la contraseña de inicio de sesión del usuario para protección". El problema aquí es que no tiene acceso a la contraseña de inicio de sesión de los usuarios, pero la función le proporciona cifrado con el que la contraseña es la clave. Esto le permite no preocuparse de que otros usuarios (incluso root) obtengan acceso a sus datos (en el caso de Linux con la advertencia adicional de que el usuario no está actualmente conectado). – chacham15

2

Hay dos opciones para almacenes de claves a nivel de usuario en Linux:

Esto no se refiere a la necesidad de un almacén de claves a nivel de sistema.

+1

-1 porque aunque estos están vinculados a la cuenta de usuario, no son alternativas de Linux a DPAPI. Consulte http://msdn.microsoft.com/en-us/library/ms995355.aspx –

+0

@rob, ¿puede explicar por qué no son "alternativas a DPAPI"? Pueden ser diferentes desde el punto de vista arquitectónico, pero logran el mismo objetivo: permitir que las aplicaciones almacenen información de forma segura sin tener que ocuparse de la autenticación del usuario. – deGoot

Cuestiones relacionadas