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?
¿PGP utiliza credenciales de usuario o sistema? Tenía entendido que para PGP debe proporcionar su propio par de claves pública/privada. –
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. –
@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