En este tema se proporciona información sobre cómo crear y usar una clave para el cifrado asimétrico con una clave RSA. Si quieres usar claves asimétricas para crear y validar firmas, consulta Crear y validar firmas digitales. Si quieres usar claves simétricas para encriptar y desencriptar, consulta Encriptar y desencriptar datos.
El cifrado asimétrico usa la parte de clave pública de la clave asimétrica, mientras que el descifrado usa la parte de clave privada de la clave. Cloud Key Management Service proporciona funciones para obtener la clave pública y para descifrar texto cifrado que se haya cifrado con la clave pública. Cloud KMS no permite el acceso directo a la clave privada.
Antes de empezar
En este tema se proporcionan ejemplos que se ejecutan en la línea de comandos. Para simplificar el uso de los ejemplos, utiliza Cloud Shell. En el ejemplo de cifrado se usa OpenSSL, que viene preinstalado en Cloud Shell.
Crea una clave asimétrica con el propósito de la clave
ASYMMETRIC_DECRYPT. Para ver qué algoritmos se admiten para el propósito de claveASYMMETRIC_DECRYPT, consulta Algoritmos de cifrado asimétrico. No puedes seguir este procedimiento con una clave que tenga el propósitoASYMMETRIC_SIGN.Si vas a usar la línea de comandos, instala OpenSSL si aún no lo tienes. Si usas Cloud Shell, OpenSSL ya está instalado.
- Usuarios de macOS: La versión de OpenSSL instalada en macOS no admite las marcas que se usan para descifrar datos en este tema. Para seguir estos pasos en macOS, instala OpenSSL desde Homebrew.
Control de acceso a la clave
Concede el permiso
cloudkms.cryptoKeyVersions.viewPublicKeya los usuarios o servicios que vayan a obtener la clave pública de la clave asimétrica. La clave pública es necesaria para cifrar los datos.Para un usuario o un servicio que vaya a descifrar datos cifrados con la clave pública, concede el permiso
cloudkms.cryptoKeyVersions.useToDecrypten la clave asimétrica.
Consulta información sobre los permisos y los roles de Cloud KMS en Permisos y roles.
Cifrar datos
Para cifrar datos con una clave de cifrado asimétrica, recupera la clave pública y úsala para cifrar los datos.
gcloud
Para usar este ejemplo, debes tener OpenSSL instalado en tu sistema local.
Descargar clave pública
Descarga la clave pública:
gcloud kms keys versions get-public-key key-version \
--key key \
--keyring key-ring \
--location location \
--output-file public-key-path
Sustituye key-version por la versión de la clave que tiene la clave pública. Sustituye key por el nombre de la clave. Sustituye key-ring por el nombre del conjunto de claves en el que se encuentra la clave. Sustituye location por la ubicación de Cloud KMS del conjunto de claves. Sustituye public-key-path por la ubicación donde se guardará la clave pública en el sistema local.
Cifrar datos
Cifra los datos con la clave pública que acabas de descargar y guarda el resultado en un archivo:
openssl pkeyutl -in cleartext-data-input-file \
-encrypt \
-pubin \
-inkey public-key-path \
-pkeyopt rsa_padding_mode:oaep \
-pkeyopt rsa_oaep_md:sha256 \
-pkeyopt rsa_mgf1_md:sha256 \
> encrypted-data-output-file
Sustituye cleartext-data-input-file por la ruta y el nombre del archivo que quieras cifrar.
Sustituye public-key-path por la ruta y el nombre de archivo donde hayas descargado la clave pública.
Sustituye encrypted-data-output-file por la ruta y el nombre del archivo en el que quieres guardar los datos cifrados.
C#
Para ejecutar este código, primero debes configurar un entorno de desarrollo de C# e instalar el SDK de Cloud KMS para C#.