IBM Cloud Docs
Criptografía de seguridad cuántica en TLS

Criptografía de seguridad cuántica en TLS

Puede utilizar una conexión TLS habilitada con seguridad cuántica para enviar solicitudes a un punto final de servicio de IBM® Key Protect for IBM Cloud®.

¿Qué es la Criptografía postcuántica?

La criptografía postcuántica es una nueva generación del sistema criptográfico de clave pública que se está sometiendo a evaluación por parte del estándar NIST. Estos nuevos algoritmos criptográficos cuánticos se basan en problemas matemáticos difíciles que, según las investigaciones actuales, ni tan solo las grandes computadoras cuánticas pueden resolver.

Cuando se utilizan estos algoritmos criptográficos cuánticos para la comunicación TLS, se espera que la seguridad del intercambio de claves públicas entre el cliente y el servidor tenga niveles de seguridad más altos que los algoritmos RSA y ECC actuales. Sin embargo, NIST no ha estandarizado los algoritmos y hasta entonces, Key Protect ha adoptado un método híbrido que combina tanto los algoritmos postcuánticos y como los actuales de ECC para proteger los datos en tránsito.

¿Por qué es importante el protocolo TLS habilitado para la criptografía postcuántica?

A medida que la computación cuántica siga evolucionando y avanzando, un gran ordenador cuántico podrá ejecutar un algoritmo "algoritmo "SHOR que puede romper los actuales algoritmos de comunicación TLS (RSA/ECC) en cuestión de minutos. Aunque los grandes ordenadores cuánticos no están disponibles hoy en día, cualquier dato de TLS en tránsito que haya sido espiado y almacenado podrá ser violado cuando estos grandes ordenadores cuánticos estén disponibles. Los datos tienen una larga vida útil, por lo que es fundamental que Key Protect dé soporte a algoritmos criptográficos postcuánticos para proteger las comunicaciones TLS.

Para mantener sus datos en tránsito resilientes, Key Protect ha introducido la capacidad de utilizar una conexión TLS habilitada para garantizar que los datos estén seguros durante el proceso de intercambio de claves.

¿Cuáles son las consideraciones de la criptografía postcuántica?

Antes de configurar el servicio para enviar solicitudes a Key Protect a través de un punto final de servicio Key Protect con seguridad cuántica habilitada, tenga en cuenta las consideraciones siguientes:

  • El Instituto Nacional de Normas y Tecnología (NIST) está normalizando algoritmos cuánticos seguros. En la actualidad, el NIST está evaluando los posibles enfoques de la criptografía cuántica segura criptografía cuántica y no se espera que complete el proceso de estandarización hasta después de 2023. Key Protect utiliza el algoritmo Kyber, que es uno de los candidatos de la tercera ronda en evaluación. Si la investigación del NIST revela que el algoritmo Kyber no es un criptografía postcuántica, el mecanismo de intercambio de claves seguirá protegido por los algoritmos clásicos de TLS cuando se utiliza el algoritmo Kyber en modo híbrido.

  • Los resultados del rendimiento pueden variar respecto a los algoritmos de clave tradicionales. El algoritmo de criptografía postcuántica utiliza un tamaño de clave mayor en comparación con los algoritmos clásicos de clave pública, por lo tanto los requisitos de ancho de banda de la red serán más altos. El rendimiento del algoritmo de criptografía postcuántica también puede verse afectado por el perfil de red, la velocidad de la CPU y los índices de llamadas de API.

  • TLS con criptografía postcuántica sólo protege los datos en tránsito, no en reposo. Los algoritmos de seguridad cuántica utilizados por Key Protect protegen los datos de violaciones mientras viajan hasta un punto final de servicio de Key Protect. Las claves raíz importadas (incluidas sus cargas útiles asociadas) se cifran mediante claves de sesión TLS. El cifrado de datos en reposo utiliza claves simétricas y las claves simétricas AES 256 están a salvo de grandes ataques informáticos cuánticos.

  • Key Protect sólo da soporte a TLS con criptografía postcuántica para plataformas Linux. Key Protect proporcionará soporte de conexión TLS con criptografía de seguridad postcuántica a sistemas operativos adicionales en el futuro.

  • TLS con criptografía postcuántica sólo está soportado a través del kit de desarrollo de software (SDK) de Key Protect. El soporte de TLS de seguridad cuántica se añadirá a la interfaz de línea de mandatos (CLI) de Key Protect en el futuro. Para obtener más información sobre cómo acceder al SDK de Key Protect, consulte Configuración del SDK.

Utilización de TLS con criptografía postcuántica con Key Protect

Puede elegir entre las modalidades de conexión TLS de seguridad cuántica híbrida y no híbrida cuando envíe solicitudes a Key Protect.

Modalidad de criptografía postcuántica versus modalidad híbrida

Key Protect da soporte a dos modalidades que protegen las claves durante una conexión TLS: la modalidad de criptografía postcuántica y la modalidad híbrida.

  • Modo híbrido: El modo híbrido utiliza una combinación de un algoritmo cuántico seguro y algoritmos clásicos de intercambio de claves para proteger sus datos mientras están en tránsito. Cuando usted hace una solicitud usando este modo, se utilizarán el algoritmo elíptico clásico y el algoritmo cuántico seguro en un mecanismo de intercambio de claves para proteger criptográficamente sus datos mientras se dirigen al servicio Key Protect.

    La modalidad híbrida da soporte al algoritmo Kyber híbrido con los siguientes conjuntos de parámetros (tamaños de clave):

    • p256_kyber512: combina kyber512 con ECDH utilizando la curva p_256. Proporciona seguridad L1.
    • p384_kyber768: combina kyber768 con ECDH utilizando la curva p_384. Proporciona seguridad L3.
    • p521_kyber1024: combina kyber1024 con ECDH utilizando la curva p_521. Proporciona seguridad L5.

El algoritmo híbrido se utiliza según las instrucciones de la base comunidad de proyectos Open Quantum Safe (OQS) . Para más información sobre el algoritmo y sus tamaños de clave asociados asociados, consulte Prototipos de intercambio de claves post-cuántico e híbrido.

  • Modo de seguridad cuántica: El modo de seguridad cuántica utiliza un algoritmo cuántico seguro para proteger sus datos mientras está en tránsito. Cuando realice una solicitud utilizando esta modalidad, se utilizará el algoritmo de seguridad cuántica en un mecanismo de intercambio de claves para proteger criptográficamente sus datos mientras se dirigen al servicio Key Protect.

    La modalidad de criptografía postcuántica da soporte al algoritmo Kyber con los siguientes conjuntos de parámetros (tamaños de clave):

    • kyber512
    • kyber768
    • kyber1024

El algoritmo de Kyber se utiliza en base a la recomendación de IBM Cloud. Para saber más sobre el algoritmo y sus tamaños de clave asociados, consulte CRYSTALS-Kyber.

Puntos finales habilitados para la criptografía postcuántica

IBM® Key Protect for IBM Cloud® tiene puntos finales habilitados para la criptografía postcuántica para 2 regiones; US-South y EU-GB. Consulte la tabla siguiente para determinar qué puntos finales habilitados para la criptografía postcuántica se deben utilizar al enviar solicitudes al servicio IBM® Key Protect for IBM Cloud®.

Enumera los puntos finales públicos con seguridad cuántica habilitada para interactuar con Key Protect API a través de la red pública de IBM Cloud
Región Puntos finales públicos
Dallas qsc.us-south.kms.cloud.ibm.com
Londres qsc.eu-gb.kms.cloud.ibm.com
Frankfurt qsc.eu-de.kms.cloud.ibm.com
Enumera los puntos finales privados con seguridad cuántica habilitada para interactuar con Key Protect API a través de la red privada de IBM Cloud
Región Puntos finales privados
Dallas private-qsc.us-south.kms.cloud.ibm.com
Londres private-qsc.eu-gb.kms.cloud.ibm.com
Frankfurt private-qsc.eu-de.kms.cloud.ibm.com

Los puntos finales de servicio Key Protect clásicos no están habilitados para la criptografía postcuántica.

Configurar TLS con criptografía postcuántica con Key Protect a través del SDK

Requisitos previos

Antes de configurar la aplicación para que funcione con el SDK, siga estos pasos:

  1. Descargue el Open Quantum Safe Software Stack(OQSSA)script. Este script creará e instalará todas las dependencias necesarias (liboqs, openssl y libcurl) en la carpeta del directorio HOME ($HOME/opt/oqssa/).

  2. Asegúrese de que se han instalado los paquetes dependientes necesarios para crear OQSSA. Necesitará los permisos sudo para instalar los paquetes de dependencias.

    • Dependencias de Debian (Ubuntu): libtool automake autoconf cmake (3.5 or above) make openssl libssl-dev build-essential git wget golang (1.14 or above) patch perl diffutils

    Si está utilizando una distribución Debian, copie el siguiente fragmento de código en un archivo y ejecútelo para verificar que se han instalado todos los paquetes necesarios:

    echo "Starting prerequisites verification"
    CMAKE_VER_REQUIRED="3.*"
    packages="libtool automake autoconf cmake make openssl libssl-dev git wget build-essential golang patch perl diffutils"
    for REQUIRED_PKG in $packages
    do
        PKG_STATUS=$(dpkg-query -W --showformat='${Version},${Status}\n' $REQUIRED_PKG|grep "install ok installed")
        if [ "" = "$PKG_STATUS" ]
        then
          echo "$REQUIRED_PKG is NOT installed"
          #sudo apt-get -y install $REQUIRED_PKG
        else
          PKG_VER=$(echo $PKG_STATUS| cut -d',' -f 1)
          if [ "cmake" == $REQUIRED_PKG ]  && ! [[ $PKG_VER =~ $CMAKE_VER_REQUIRED ]]
          then
            echo "$REQUIRED_PKG Version is: $PKG_VER. OQSSA requires cmake 3.5 and above."
          fi
        fi
    done
    echo "Prerequisites verification completed"
    
    • Dependencias de RHEL (Centos/Fedora): libtool automake autoconf cmake (3.5 or above) make openssl ncurses-devel gcc-c++ glibc-locale-source glibc-langpack-enopenssl-devel git wget golang (1.14 or above) patch perl diffutils 'Developement Tools'

    Si está utilizando una distribución RHEL, copie el siguiente fragmento de código en un archivo y ejecútelo para verificar que se han instalado todos los paquetes necesarios:

    echo "Starting prerequisites verification"
    CMAKE_VER_REQUIRED="3.*"
    packages="git libtool automake autoconf cmake make openssl  ncurses-devel gcc-c++ openssl-devel wget glibc-locale-source glibc-langpack-en sudo golang patch perl diffutils"
    for REQUIRED_PKG in $packages
    do
        PKG_STATUS=$(rpm -q --qf '%{VERSION},%{INSTALLTIME}\n' $REQUIRED_PKG)
        if [[ "$PKG_STATUS" == *"not installed"* ]];
        then
        echo "$REQUIRED_PKG is NOT installed"
        #sudo yum -y install $REQUIRED_PKG
        else
          PKG_VER=$(echo $PKG_STATUS| cut -d',' -f 1)
          if [ "cmake" == $REQUIRED_PKG ]  && ! [[ $PKG_VER =~ $CMAKE_VER_REQUIRED ]]
          then
            echo "$REQUIRED_PKG Version is: $PKG_VER. OQSSA requires cmake 3.5 and above."
          fi
        fi
    done
    PKG_STATUS=$(yum grouplist Dev* |grep "Development Tools")
    if [ "" = "$PKG_STATUS" ]
    then
        echo "Developement Tools is NOT installed"
    fi
    echo "Prerequisites verification completed"
    
  3. Una vez instalados y verificados los paquetes de requisito previo, ejecute el script para crear e instalar OQSSA:

    bash build-oqssa.sh
    
  4. Ejecute el mandato siguiente para establecer la vía de acceso de la biblioteca Quantum:

    export LD_LIBRARY_PATH=$HOME/opt/oqssa/lib:$LD_LIBRARY_PATH
    

Configuración del Key Protect SDK con la aplicación

Una vez que haya instalado los requisitos previos, siga estos pasos para configurar el SDK deKey Protect con la aplicación:

  1. Vaya a la carpeta donde reside el cliente go ejecutando el mandato siguiente:

        cd $HOME/keyprotect-go-client
    
  2. Establezca el algoritmo de Kyber en la inicialización del cliente de Key Protect en el código de aplicación. Si no especifica un algoritmo, la aplicación optará de forma predeterminada por utilizar el algoritmo p384_kyber768. Utilice el código siguiente como ejemplo de configuración de algoritmo:

    qscConfig := kp.ClientQSCConfig{
        AlgorithmID: kp.KP_QSC_ALGO_p384_KYBER768,
    }
    
  3. Compile el Key Protect SDK ejecutando el mandato siguiente:

    LD_LIBRARY_PATH=$HOME/opt/oqssa/lib PKG_CONFIG_PATH=$HOME/opt/oqssa/lib/pkgconfig go build –-tags quantum
    

Utilización de puntos finales de Key Protect de criptografía postcuántica mediante CURL

Requisitos previos

Antes de realizar una solicitud curl a un punto final de Key Protect habilitado con seguridad cuántica, siga estos pasos:

  1. Descargue el Open Quantum Safe Software Stack(OQSSA)script. Este script creará e instalará todas las dependencias necesarias (liboqs, openssl y libcurl) en la carpeta del directorio HOME ($HOME/opt/oqssa/).

  2. Asegúrese de que se han instalado los paquetes dependientes necesarios para crear OQSSA. Necesitará los permisos sudo para instalar los paquetes de dependencias.

    • Dependencias de Debian (Ubuntu): libtool automake autoconf cmake (3.5 or above) make openssl libssl-dev build-essential git wget golang (1.14 or above) patch perl diffutils

    Si está utilizando una distribución Debian, copie el siguiente fragmento de código en un archivo y ejecútelo para verificar que se han instalado todos los paquetes necesarios:

    echo "Starting prerequisites verification"
    CMAKE_VER_REQUIRED="3.*"
    packages="libtool automake autoconf cmake make openssl libssl-dev git wget build-essential golang patch perl diffutils"
    for REQUIRED_PKG in $packages
    do
        PKG_STATUS=$(dpkg-query -W --showformat='${Version},${Status}\n' $REQUIRED_PKG|grep "install ok installed")
        if [ "" = "$PKG_STATUS" ]
        then
          echo "$REQUIRED_PKG is NOT installed"
          #sudo apt-get -y install $REQUIRED_PKG
        else
          PKG_VER=$(echo $PKG_STATUS| cut -d',' -f 1)
          if [ "cmake" == $REQUIRED_PKG ]  && ! [[ $PKG_VER =~ $CMAKE_VER_REQUIRED ]]
          then
            echo "$REQUIRED_PKG Version is: $PKG_VER. OQSSA requires cmake 3.5 and above."
          fi
        fi
    done
    echo "Prerequisites verification completed"
    
    • Dependencias de RHEL (Centos/Fedora): libtool automake autoconf cmake (3.5 or above) make openssl ncurses-devel gcc-c++ glibc-locale-source glibc-langpack-enopenssl-devel git wget golang (1.14 or above) patch perl diffutils 'Developement Tools''

    Si está utilizando una distribución RHEL, copie el siguiente fragmento de código en un archivo y ejecútelo para verificar que se han instalado todos los paquetes necesarios:

    echo "Starting prerequisites verification"
    CMAKE_VER_REQUIRED="3.*"
    packages="git libtool automake autoconf cmake make openssl  ncurses-devel gcc-c++ openssl-devel wget glibc-locale-source glibc-langpack-en sudo golang patch perl diffutils"
    for REQUIRED_PKG in $packages
    do
        PKG_STATUS=$(rpm -q --qf '%{VERSION},%{INSTALLTIME}\n' $REQUIRED_PKG)
        if [[ "$PKG_STATUS" == *"not installed"* ]];
        then
        echo "$REQUIRED_PKG is NOT installed"
        #sudo yum -y install $REQUIRED_PKG
        else
          PKG_VER=$(echo $PKG_STATUS| cut -d',' -f 1)
          if [ "cmake" == $REQUIRED_PKG ]  && ! [[ $PKG_VER =~ $CMAKE_VER_REQUIRED ]]
          then
            echo "$REQUIRED_PKG Version is: $PKG_VER. OQSSA requires cmake 3.5 and above."
          fi
        fi
    done
    PKG_STATUS=$(yum grouplist Dev* |grep "Development Tools")
    if [ "" = "$PKG_STATUS" ]
    then
        echo "Developement Tools is NOT installed"
    fi
    echo "Prerequisites verification completed"
    
  3. Una vez instalados y verificados los paquetes de requisito previo, ejecute el script para crear e instalar OQSSA:

    bash build-oqssa.sh
    

Hacer una solicitud CURL a un punto final habilitado para la criptografía postcuántica

Al realizar una llamada a un punto final habilitado con seguridad cuántica mediante una curl solicitud, tendrá que suse específica para asegurarse de que la solicitud se realice correctamente. La tabla siguiente contiene una lista de distintivos que son necesarios al realizar una solicitud de curl de criptografía postcuántica.

Describe las banderas necesarias para realizar peticiones curl al servicio Key Protect.
Distintivo Descripción
-tlsv1.3 Este distintivo impone que curl se conecte a un servidor TLS v1.3.
--curves Este distintivo especificará qué algoritmo de seguridad cuántica debe utilizarse en el
Mecanismo de intercambio de claves de TLSv1.3. Si no especifica un algoritmo, el distintivo tomará como valor predeterminado el algoritmo p384_kyber768.

Puede utilizar la siguiente solicitud de ejemplo para recuperar una lista de claves para su instancia de Key Protect a través de un punto final habilitado para seguridad cuántica.

$ curl --tlsv1.3 --curves <qsc_algorithm> -X GET \
    "https://qsc.<region>.kms.cloud.ibm.com/api/v2/keys" \
    -H "accept: application/vnd.ibm.kms.key+json" \
    -H "authorization: Bearer <IAM_token>" \
    -H "bluemix-instance: <instance_ID>"

Sustituya las variables de la solicitud siguiendo la siguiente tabla.

Describe las variables necesarias para realizar una petición de claves de lista a través de un endpoint quantum safe.
Variable Descripción
qsc_algorithm Obligatorio. El algoritmo kyber en el tamaño de clave que se utilizará para proteger los datos en tránsito.

Algoritmo aceptable + tamaños de clave: kyber512, kyber768, kyber1024, p256_kyber512, p384_kyber768 y p521_kyber1024.
región Obligatorio. La abreviatura de la región, como us-south o eu-gb, que representa la zona geográfica donde reside la instancia de Key Protect.

For more information, see Puntos finales de servicio regionales.
IAM_token Obligatorio. Su señal de acceso de IBM Cloud. Incluya el contenido completo de la señal IAM, incluido el valor Bearer, en la solicitud curl.

For more information, see Recuperación de un token de acceso.
instance_ID Obligatorio. El único identificador que está asignado a su instancia de servicio de Key Protect.

For more information, see Recuperación de un ID de instancia.