Nota:

Creación de redundancia para claves asimétricas en almacenes virtuales de Oracle Cloud Infrastructure

Introducción

En el acelerado mundo digital actual, la seguridad de los datos es de suma importancia. A medida que las organizaciones confían cada vez más en una infraestructura basada en la nube, es fundamental garantizar la confidencialidad de la información confidencial. Para ello, suelen utilizar el cifrado, que requiere una gestión de claves segura. Sin embargo, la gestión de claves puede plantear importantes desafíos, sobre todo en lo que respecta a la redundancia y la disponibilidad. En esta entrada del blog, analizaremos cómo puede lograr redundancia para claves asimétricas en almacenes virtuales y cómo las aplicaciones en dos regiones diferentes pueden aprovechar esto para el cifrado y el descifrado.

Oracle Cloud Infrastructure (OCI) ofrece Virtual Private Vault (VPV), un servicio de gestión de claves totalmente gestionado que le permite gestionar de forma centralizada las claves utilizadas para el cifrado de datos, el descifrado y la firma. Una de las funciones más críticas de VPV es la copia de seguridad y restauración entre regiones. Con esta función, puede realizar copias de seguridad y restaurar claves entre regiones, lo que las hace disponibles para su uso en una región diferente a la región en la que se crearon.

Vale la pena notar que la copia de seguridad y la restauración solo funcionan para VPV, no para Virtual Vault (VV), otro servicio de gestión de claves ofrecido por OCI. Además, no hay forma de realizar una copia de seguridad de las claves del módulo de seguridad de hardware (HSM) en Virtual Vault. Sin embargo, con la opción de clave Traiga su propia clave (BYOK)/import, puede importar el mismo material de claves en los almacenes de dos regiones diferentes e incluso si una región está completamente caída, la copia en otra región servirá como copia de seguridad. Esta redundancia garantiza que sus claves estén siempre disponibles, incluso si una región sufre una interrupción o un desastre. También le permite cumplir los requisitos normativos y de conformidad que exigen redundancia clave y recuperación ante desastres.

Objetivo

En este tutorial se guía por los pasos de alto nivel para importar la misma clave RSA en almacenes virtuales ubicados en dos regiones diferentes. La importación de claves se realizará en una región mediante un procedimiento paso a paso, mientras que en la otra región se utilizará un script para la importación. Después de importar la clave, cifraremos los datos de prueba con la clave en una región y, a continuación, descifraremos el texto cifrado resultante con la misma clave en el almacén ubicado en la otra región.

Requisitos

Cuenta de OCI con acceso para crear y gestionar almacenes y claves.

Nota: Para el escenario "Traiga su propia clave (BYOK), debe aplicar parches a OpenSSL. Para aplicar parches a OpenSSL, se necesita acceso con privilegios para ejecutar los comandos de shell necesarios. Se recomienda ejecutar los comandos de shell en un cuadro de Linux con acceso con privilegios. Los comandos de la CLI de OCI se pueden ejecutar en el shell en la nube o en un cuadro de Linux donde la CLI de OCI está instalada y configurada. Siga este procedimiento para instalar y configurar la CLI de OCI en un cuadro de Linux.

Tarea 1: importe la clave en un almacén de la primera región (ejemplo:Phoenix)

Siga este procedimiento para importar una clave asimétrica (RSA) a un almacén virtual.

  1. Aplique un parche a OpenSSL: para el escenario "Traiga su propia clave (BYOK), debe aplicar un parche a OpenSSL para el ajuste de RSA_OAEP_AES_SHA256. Siga este procedimiento para aplicar parches a OpenSSL.

  2. Generar el material clave: utilice el material clave generado por una herramienta u origen según sus requisitos. En este tutorial, estamos utilizando OpenSSL para generar el material clave.

    $HOME/local/bin/openssl.sh genrsa -out PRIVATEKEY.pem 2048
    
    
  3. Obtener la clave de encapsulado RSA pública.

    oci kms management wrapping-key get --endpoint <control_plane_URL>
    
    
    oci kms management wrapping-key get --endpoint https://abcdefghijk-management.kms.us-phoenix-1.oraclecloud.com --raw-output --query 'data."public-key"' > VAULT_PUBLIC_WRAPPING_KEY.pem
    
    
  4. Aplique RSA-OAEP con AES para ajustar el material de claves mediante la interfaz CLI.

    a. Genere una clave AES temporal.

    openssl rand -out <temporary_AES_key_path> 32
    
    
    $HOME/local/bin/openssl.sh rand -out TEMP_AES_KEY.key 32
    
    

    b. Ajuste la clave AES temporal con la clave de ajuste pública mediante RSA-OAEP con SHA-256.

    openssl pkeyutl -encrypt -in <temporary_AES_key_path> -inkey <vault_public_wrapping_key_path> -pubin -out <wrapped_temporary_AES_key_file> -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256
    
    
    $HOME/local/bin/openssl.sh pkeyutl -encrypt -in TEMP_AES_KEY.key -inkey VAULT_PUBLIC_WRAPPING_KEY.pem -pubin -out WRAPPED_TEMP_AES_KEY.bin -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256
    
    

    c. Genere hexadecimal del material de claves AES temporal.

    temporary_AES_key_hexdump=$(hexdump -v -e '/1 "%02x"' < temporary_AES_key_path)
    
    
    TEMPORARY_AES_KEY_HEXDUMP=$(hexdump -v -e '/1 "%02x"' < TEMP_AES_KEY.key)
    
    

    d. Si la clave privada RSA que desea importar está en formato PEM, conviértala en DER.

    ${OpenSSL_path} pkcs8 -topk8 -nocrypt -inform PEM -outform DER -in <your_pem_RSA_private_key_path> -out <your_RSA_private_key_file>
    
    
    $HOME/local/bin/openssl.sh pkcs8 -topk8 -nocrypt -inform PEM -outform DER -in PRIVATEKEY.pem -out TARGET_KEY.key
    
    

    e. Ajuste la clave privada RSA con la clave AES temporal.

    openssl enc -id-aes256-wrap-pad -iv A65959A6 -K temporary_AES_key_hexdump -in <your_RSA_private_key_file> -out <wrapped_target_key_file>
    
    
    $HOME/local/bin/openssl.sh enc -id-aes256-wrap-pad -iv A65959A6 -K $TEMPORARY_AES_KEY_HEXDUMP -in TARGET_KEY.key -out WRAPPED_TARGET_KEY.bin
    
    

    f. Cree el material de claves encapsulado concatenando ambas claves encapsuladas.

    cat <wrapped_temporary_AES_key_file> <wrapped_target_key_file> > <wrapped_key_material_file>
    
    
    cat WRAPPED_TEMP_AES_KEY.bin WRAPPED_TARGET_KEY.bin > WRAPPED_KEY_MATERIAL.bin
    
    

    g. Aplique la codificación base64 en el material de claves encapsulado y, a continuación, impórtela para crear una clave mediante CLI.

    base64 WRAPPED_KEY_MATERIAL.bin -w 0 > WRAPPED_KEY_MATERIAL.base64
    
    
  5. Importe el material de claves como clave externa mediante la CLI de OCI.

    oci kms management key import --wrapped-import-key <wrapped_key_material> --compartment-id <compartment_id> --display-name <key_name> --endpoint <control_plane_URL> --key-shape <key_encryption_information> --protection-mode <key_protection_mode>
    
    
    echo "{ \"wrappingAlgorithm\": \"RSA_OAEP_AES_SHA256\", \"keyMaterial\": \"$(cat WRAPPED_KEY_MATERIAL.base64)\" }" > WRAPPED_IMPORT_KEY.json
    
    
    echo "{ \"algorithm\": \"RSA\", \"length\": \"256\" }" > KEY_SHAPE.json
    
    
    oci kms management key import --wrapped-import-key file://WRAPPED_IMPORT_KEY.json --compartment-id ocid1.compartment.oc1..aaaaaaaabbbbbbbbbccccccccdddddddeeeeeefffff --display-name IMPORTEDKEY --endpoint https://abcdefghijk-management.kms.us-phoenix-1.oraclecloud.com --key-shape file://KEY_SHAPE.json --protection-mode SOFTWARE
    
    

Tarea 2: importe la misma clave en un almacén virtual en la segunda región (ejemplo: Ashburn)

Tarea 3: Cifrado y descifrado de datos

Ahora que tiene una clave creada en su almacén, puede utilizarla para cifrar y descifrar los datos.

  1. Cifre con la clave RSA presente en el almacén para la primera región.

    oci kms crypto encrypt --key-id <key_ocid> --plaintext <plaintext Base64 Encoded> --encryption-algorithm <Encryption Algorithm> --endpoint <Vault Crypto Endpoint>

    • Para cifrar mediante el algoritmo de cifrado de clave RSA es un parámetro obligatorio y los valores aceptados son RSA_OAEP_SHA_1, RSA_OAEP_SHA_256

      Imagen 1

  2. Descifrar mediante clave RSA presente en el almacén de la segunda región.

    oci kms crypto decrypt --key-id <key_ocid> --ciphertext <cipher text> --encryption-algorithm <Encryption Algorithm> --endpoint <Vault Crypto Endpoint>

    Imagen 2

OCI Key Management ofrece funciones sólidas que le permiten lograr redundancia de claves y gestionar de forma segura sus claves de cifrado. Con la copia de seguridad entre regiones, la restauración y la replicación para el almacén privado virtual y la opción de importación BYOK/key para el almacén virtual, puede asegurarse de que los datos permanecen seguros incluso si una región está completamente caída. Las aplicaciones alojadas en diferentes regiones pueden aprovechar estas funciones para cifrar y descifrar datos de forma segura en diferentes regiones.

Agradecimientos

Autor: Chaitanya Chintala (asesor de seguridad en la nube)

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.

Para obtener documentación sobre los productos, visite Oracle Help Center.