IBM Cloud Docs
Introduzione alla crittografia quantistica sicura in TLS

Introduzione alla crittografia quantistica sicura in TLS

È possibile utilizzare una connessione TLS abilitata quantum safe per inviare richieste a IBM® Key Protect for IBM Cloud® endpoint del servizio.

Che cos' è la crittografia Quantum Safe?

La crittografia quantistica sicura, nota anche come post - crittografia quantistica, è una nuova generazione del sistema crittografico a chiave pubblica che è in fase di valutazione NIST. Questi nuovi algoritmi di crittografia quantistica si basano su difficili problemi matematici che, basandosi sulla ricerca attuale, anche i grandi computer quantistici non possono rompersi.

Quando questi algoritmi di crittografia quantistica vengono utilizzati per le comunicazioni TLS, si prevede che la sicurezza dello scambio di chiavi pubbliche tra il client e il server abbia livelli di sicurezza più elevati rispetto agli attuali algoritmi RSA ed ECC. Tuttavia, NIST non ha standardizzato gli algoritmi e fino a quel momento, Key Protect ha adottato un metodo ibrido che combina gli algoritmi ECC corrente e Quantum Safe per proteggere i dati in transito.

Perché è importante Quantum Safe TLS?

Mentre il calcolo quantistico continua a evolversi e avanzare, un grande computer quantistico sarà in grado di eseguire un Algoritmo "SHOR" che può interrompere gli algoritmi di comunicazione TLS correnti (RSA/ECC) in pochi minuti. Mentre i grandi computer quantistici non sono disponibili oggi, tutti i dati TLS in transito che sono stati snoopati e archiviati possono essere violati quando questi grandi computer quantistici sono resi disponibili. I dati hanno una durata di conservazione lunga, quindi è fondamentale che Key Protect supporti algoritmi crittografici quantistici sicuri per proteggere le comunicazioni TLS.

Per mantenere la resilienza dei dati in transito, Key Protect ha introdotto la possibilità di utilizzare una connessione TLS abilitata per la sicurezza quantistica per garantire che i tuoi dati siano protetti durante il processo di scambio chiavi.

Quali sono le considerazioni di Quantum Safe Cryptography?

Prima di configurare il tuo servizio per inviare richieste a Key Protect tramite un sistema di sicurezza quantistico abilitato Endpoint del servizio Key Protect, tenere presente le seguenti considerazioni:

  • Il NIST (National Institute for Standards and Technology) sta per standardizzare gli algoritmi di sicurezza quantistica. Il NIST sta attualmente valutando gli approcci candidati alla crittografia quantistica sicura e non si prevede di completare il processo di standardizzazione fino a dopo il 2023. Key Protect utilizza l'algoritmo Kyber, che è uno dei candidati della terza fase in fase di valutazione. Se la ricerca del NIST rivela che l'algoritmo di Kyber non è quantistico sicuro, il meccanismo di scambio delle chiavi è ancora protetto dai classici algoritmi TLS quando si utilizza l'algoritmo di Kyber in modalità ibrida.

  • I risultati delle prestazioni possono variare dagli algoritmi chiave tradizionali. L'algoritmo quantistico sicuro utilizza una dimensione chiave più grande rispetto ai classici algoritmi di chiave pubblica, quindi i requisiti di larghezza di banda della rete saranno più elevati. Le prestazioni degli algoritmi di sicurezza quantistica possono essere influenzate anche dal profilo di rete, dalla velocità della CPU e dalle velocità di chiamata API.

  • Quantum Safe TLS protegge solo i dati in transito, non quelli inattivi. Gli algoritmi di sicurezza quantistica utilizzati da Key Protect protegge i tuoi dati dalla violazione mentre viaggiano a un endpoint del servizio Key Protect. Le chiavi root importate (inclusi i relativi payload associati) sono crittografati dalle chiavi della sessione TLS. La crittografia dei dati inattivi utilizza chiavi simmetriche e le chiavi simmetriche AES 256 sono al sicuro da grandi attacchi di computer quantistici.

  • Key Protect supporta solo Quantum Safe TLS per le piattaforme Linux. Key Protect fornirà in futuro un supporto di connessione TLS sicuro per ulteriori sistemi operativi.

  • Quantum Safe TLS è supportato solo tramite Key Protect SDK (software development kit) Il supporto TLS quantistico sicuro verrà aggiunto al CLI (command line interface) Key Protect in futuro. Per ulteriori informazioni sull'accesso al Key Protect, controlla Configurazione dell'SDK.

Utilizzo di Quantum Safe TLS con Key Protect

È possibile scegliere tra le modalità di connessione TLS sicura quantistica ibrida e non ibrida quando si inviano richieste a Key Protect.

Modalità Quantum Safe vs Hybrid Mode

Key Protect supporta due modalità che proteggono le tue chiavi durante una connessione TLS: Quantum Safe Mode e Hybrid mode.

  • Modalità ibrida: La modalità ibrida utilizza una combinazione di un algoritmo quantistico sicuro e di algoritmi di scambio chiave classici per proteggere i dati durante il transito. Quando si effettua una richiesta utilizzando questa modalit ..., l'algoritmo ellittico classico e l'algoritmo di sicurezza quantistica verranno utilizzati in un meccanismo di scambio di chiavi per proteggere crittograficamente i dati mentre si fa strada verso il Servizio Key Protect.

    La modalità ibrida supporta l'algoritmo Kyber ibrido con le seguenti serie di parametri (dimensioni chiave):

    • p256_kyber512: combina kyber512 con ECDH utilizzando la curva p_256. Fornisce Sicurezza L1.
    • p384_kyber768: combina kyber768 con ECDH utilizzando la curva p_384. Fornisce Sicurezza L3.
    • p521_kyber1024: combina kyber1024 con ECDH utilizzando la curva p_521. Fornisce la sicurezza L5.

L'algoritmo ibrido viene utilizzato sulla base della guida dell'Open Quantum Safe (OQS) comunità di progetto. Per ulteriori informazioni sull'algoritmo e le relative dimensioni di chiave associate, consultare Prototipazione dello scambio di chiavi post - quantum e ibride.

  • Modalità sicura quantistica: La modalità di sicurezza quantistica utilizza un algoritmo di sicurezza quantistica per proteggere i dati durante il transito. Quando si effettua una richiesta utilizzando questa modalit ..., l'algoritmo di sicurezza quantistica verr ... utilizzato in un meccanismo di scambio di chiavi per proteggere crittograficamente i dati mentre si fa strada Servizio Key Protect.

    La modalità Quantum Safe supporta l'algoritmo Kyber con le seguenti serie di parametri (dimensioni chiave):

    • kyber512
    • kyber768
    • kyber1024

L'algoritmo Kyber viene utilizzato in base alla raccomandazione di IBM Cloud. Per ulteriori informazioni sull'algoritmo e sulle dimensioni delle chiavi associate, consultare CRYSTALS-Kyber.

Endpoint abilitati Quantum Safe

IBM® Key Protect for IBM Cloud® ha endpoint abilitati con sicurezza quantistica per 2 regioni; US-South e EU-GB. Consulta la seguente tabella per determinare quali endpoint abilitati quantum safe utilizzare quando si inviano richieste al servizio IBM® Key Protect for IBM Cloud®.

Tabella 1. Elenca gli endpoint pubblici abilitati a sicurezza quantistica per l'interazione con le API Key Protect sulla rete pubblica di IBM Cloud
Regione Endpoint pubblici
Dallas qsc.us-south.kms.cloud.ibm.com
Londra qsc.eu-gb.kms.cloud.ibm.com
Francoforte qsc.eu-de.kms.cloud.ibm.com
Tabella 2. Elenca gli endpoint privati abilitati a quantum safe per l'interazione con le API Key Protect sulla rete privata di IBM Cloud
Regione Endpoint privati
Dallas private-qsc.us-south.kms.cloud.ibm.com
Londra private-qsc.eu-gb.kms.cloud.ibm.com
Francoforte private-qsc.eu-de.kms.cloud.ibm.com

Gli endpoint del servizio Key Protect classici non sono abilitati alla sicurezza quantistica.

Configura Quantum Safe TLS con Key Protect tramite SDK

Prerequisiti

Prima di configurare la tua applicazione per utilizzare l'SDK, attieniti alla seguente procedura:

  1. Scarica il Script OQSSA(Open Quantum Safe Software Stack) Questo script creerà e installerà tutte le dipendenze necessarie (liboqs, openssl e libcurl) nella cartella della directory HOME ($HOME/opt/oqssa/).

  2. Assicurarsi che i pacchetti dipendenti richiesti per la creazione di OQSSA siano installati. Saranno necessarie le autorizzazioni sudo per installare i pacchetti di dipendenza.

    • Dipendenze 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

    Se si sta utilizzando una distribuzione Debian, copiare il seguente frammento di codice in un file ed eseguirlo per verificare che tutti i pacchetti necessari siano stati installati:

    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"
    
    • Dipendenze 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'

    Se si utilizza una distribuzione RHEL, copiare il seguente frammento di codice in un file ed eseguirlo per verificare che tutti i pacchetti necessari siano stati installati:

    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 volta installati e verificati i pacchetti prerequisiti, eseguire lo script per creare e installare OQSSA:

    bash build-oqssa.sh
    
  4. Eseguire il seguente comando per impostare il percorso della libreria Quantum:

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

Configurazione dell'SDK Key Protect con la tua applicazione

Una volta installati i prerequisiti, attenersi alla seguente procedura per configurare SDKKey Protect con l'applicazione:

  1. Passare alla cartella in cui si trova il client go eseguendo il comando riportato di seguito:

        cd $HOME/keyprotect-go-client
    
  2. Impostare l'algoritmo Kyber nell'inizializzazione del Key Protect nel tuo codice dell'applicazione. Se non si specifica un algoritmo, per impostazione predefinita l'applicazione utilizzerà l'algoritmo p384_kyber768. Utilizzare il codice riportato di seguito come un esempio di configurazione degli algoritmi:

    qscConfig := kp.ClientQSCConfig{
        AlgorithmID: kp.KP_QSC_ALGO_p384_KYBER768,
    }
    
  3. Compila l'SDK Key Protect immettendo il seguente comando:

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

Utilizzo degli endpoint Quantum Safe Key Protect via CURL

Prerequisiti

Prima di effettuare una richiesta curl a un Key Protect endpoint abilitato quantum safe, attenersi alla seguente procedura:

  1. Scarica il Script OQSSA(Open Quantum Safe Software Stack) Questo script creerà e installerà tutte le dipendenze necessarie (liboqs, openssl e libcurl) nella cartella della directory HOME ($HOME/opt/oqssa/).

  2. Assicurarsi che i pacchetti dipendenti richiesti per la creazione di OQSSA siano installati. Saranno necessarie le autorizzazioni sudo per installare i pacchetti di dipendenza.

    • Dipendenze 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

    Se si sta utilizzando una distribuzione Debian, copiare il seguente frammento di codice in un file ed eseguirlo per verificare che tutti i pacchetti necessari siano stati installati:

    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"
    
    • Dipendenze 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''

    Se si utilizza una distribuzione RHEL, copiare il seguente frammento di codice in un file ed eseguirlo per verificare che tutti i pacchetti necessari siano stati installati:

    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 volta installati e verificati i pacchetti prerequisiti, eseguire lo script per creare e installare OQSSA:

    bash build-oqssa.sh
    

Esecuzione di una richiesta CURL a un endpoint abilitato quantum safe

Quando si effettua una chiamata a un endpoint abilitato per la sicurezza quantistica tramite curl , sarà necessario utilizzare una specifica per garantire che la richiesta venga eseguita correttamente. La seguente tabella contiene un elenco di indicatori richiesti quando si effettua una richiesta Quantum Safe curl.

Tabella 3. Descrive gli indicatori necessari per effettuare richieste curl al servizio Key Protect.
Indicatore Descrizione
-tlsv1.3 Questo indicatore applica la connessione curl a un server TLS v1.3.
-- curve Questo indicatore specificherà quale algoritmo di sicurezza quantistica deve essere utilizzato nel
Meccanismo di scambio chiavi TLSv1.3. Se non si specifica un algoritmo, l'indicatore utilizzerà per impostazione predefinita l'algoritmo p384_kyber768.

Puoi utilizzare la seguente richiesta di esempio per richiamare un elenco di chiavi per il tuo Istanza Key Protect tramite un endpoint abilitato a sicurezza quantistica.

$ 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>"

Sostituire le variabili nella richiesta in base alla seguente tabella.

Tabella 4. Descrive le variabili necessarie per effettuare una richiesta di chiavi di elenco tramite un endpoint quantistico sicuro.
Variabile Descrizione
algoritmo_qsc_ Obbligatorio. L'algoritmo kyber nella dimensione chiave che verrà utilizzato per proteggere i dati in transito.

Algoritmo + dimensioni chiave accettabili: kyber512, kyber768, kyber1024, p256_kyber512, p384_kyber768e p521_kyber1024.
regione Obbligatorio. L'abbreviazione della regione, come us - south o eu - gb, che rappresenta l'area geografica in cui risiede la tua istanza Key Protect.

Per ulteriori informazioni, vedi Endpoint del servizio regionali.
Token IAM Obbligatorio. Il tuo token di accesso IBM Cloud. Includi il contenuto completo del token IAM, incluso il valore Bearer, nella richiesta curl.

Per ulteriori informazioni, vedi Richiamo di un token di accesso.
instance_id Obbligatorio. L'identificativo univoco assegnato alla tua istanza del servizio Key Protect.

Per ulteriori informazioni, consultare Richiamo di un ID istanza.