IBM Cloud Docs
Operazioni crittografiche: API PKCS #11

Operazioni crittografiche: API PKCS #11

IBM Cloud® Hyper Protect Crypto Services fornisce una serie di funzioni di crittografia eseguite in un HSM(Hardware Security Module)A physical appliance that provides on-demand encryption, key management, and key storage as a managed service. nel cloud. È possibile eseguire operazioni di crittografia accedendo a una libreria PKCS #11 scritta nello standard PKCS #11 . PKCS #11 è uno standard che specifica un'API (application programming interface), denominata Cryptoki, per le periferiche che contengono informazioni crittografiche ed eseguono funzioni crittografiche.

Per ulteriori informazioni su PKCS #11, consultare Introduzione a PKCS #11.

Installazione e configurazione della libreria PKCS #11

Per eseguire una chiamata API PKCS #11 , è necessario prima installare la libreria PKCS #11e poi impostare i tipi utente PKCS #11.

I nomi file della libreria utilizzano la convenzione di denominazione: pkcs11-grep11-<**platform**>.so.<**version**>. La piattaforma è amd64 o s390x e la versione è la sintassi standard major.minor.build. Dopo aver scaricato la libreria, spostarla in una cartella accessibile dalle applicazioni. Ad esempio, se si sta eseguendo l'applicazione su Linux®, è possibile spostare la libreria in /usr/local/lib, /usr/local/lib64 o /usr/lib.

Per accedere all'API PKCS #11 , configurare la libreria PKCS #11 impostando l'endpoint API e la chiave API nel file di configurazione grep11client.yaml. Quindi, inizializzare la libreria. Per istruzioni dettagliate, consultare Esecuzione di operazioni crittografiche con l'API PKCS #11.

Se si sta eseguendo un'applicazione Java PKCS #11 utilizzando il provider SunPKCS11 sulla piattaforma IBM Z (s390x), assicurarsi di utilizzare la JVM IBM Semeru più recente e specificare l'opzione -Xjit:noResumableTrapHandler Java quando si avvia l'applicazione. Puoi scaricare la versione s390x più recente di IBM Semeru JVM modificando il campo del filtro Architettura in s390x nella pagina IBM Semeru Runtime Downloads.

Gestione degli errori

L'API PKCS #11 di Hyper Protect Crypto Services segue il metodo standard di PKCS #11 Cryptographic Token Interface per la gestione degli errori.

Verifica della protezione delle chiavi dalle unità di crittografia

L'API PKCS #11 funziona con gli oggetti chiave generati che possono essere archiviati, aggiornati e richiamati da un keystore remoto su IBM Cloud. Come livello di protezione aggiunto, gli oggetti chiave memorizzati in IBM Cloud possono anche essere controllati per garantire che non si verifichi alcuna manomissione.

Ogni chiave simmetrica generata, derivata o non impacchettata contiene un'impronta digitale memorizzata in un attributo chiave denominato CKA_CHECK_VALUE. Questo attributo è un checksum a 3 byte per l'oggetto chiave stesso.

Dopo aver generato, derivato o spacchettato un oggetto chiave, si consiglia di memorizzare separatamente il valore di checksum iniziale (contenuto dell'attributo CKA_CHECK_VALUE) insieme a eventuali identificativi univoci dell'oggetto chiave. I checksum memorizzati separatamente possono essere utilizzati per verificare se le chiavi sono manomesse o meno.

Per verificare una chiave, eseguire un'operazione di codifica ECB (electronic codebook) di un singolo blocco di byte null (0x00) utilizzando la chiave da verificare. Se i primi 3 byte della codifica risultante sono identici al valore dell'attributo chiave CKA_CHECK_VALUE memorizzato localmente per la stessa chiave, indica che l'oggetto chiave non viene alterato. L'attributo chiave CKA_CHECK_VALUE non può essere utilizzato per ottenere qualsiasi parte del valore chiave.

Un esempio di come richiamare i valori di checksum per le chiavi AES, DES2e DES3 insieme alla verifica dei checksum delle chiavi è disponibile qui.

Elenco funzioni PKCS #11

Lo standard PKCS #11 definisce un'API denominata Cryptoki. La seguente tabella elenca le descrizioni e le funzioni API PKCS #11 Cryptoki.

Non tutte le funzioni PKCS #11 sono implementate da Hyper Protect Crypto Services. Le funzioni implementate sono contrassegnate con Yes nella tabella.

Tabella 1. Descrive le funzioni PKCS #11 implementate per backend di servizio
Categoria funzione PKCS #11 Implementato? (sì o no) Descrizione
Utilizzo generico C_Initialize Inizializza Cryptoki.
Utilizzo generico C_Finalize Ripulisce varie risorse associate a Cryptoki.
Utilizzo generico C_GetInfo Ottiene informazioni generali su Cryptoki.
Utilizzo generico C_GetFunctionList Ottiene i punti di ingresso delle funzioni libreria Cryptoki.
Gestione slot e token C_GetSlotList Ottiene un elenco di slot nel sistema.
Gestione slot e token C_GetSlotInfo Ottiene informazioni su uno specifico slot.
Gestione slot e token C_GetTokenInfo Ottiene informazioni su uno specifico token.
Gestione slot e token C_WaitForSlotEvent No Attende che si verifichi un evento di slot (inserimento token, rimozione e così via).
Gestione slot e token Elenco C_GetMechanism Ottiene un elenco di meccanismi supportati da un token.
Gestione slot e token C_GetMechanismInfo Ottiene informazioni su uno specifico meccanismo.
Gestione slot e token C_InitToken Inizializza un token.
Gestione slot e token C_InitPIN Inizializza il PIN dell'utente normale.
Gestione slot e token C_SetPIN Modifica il PIN dell'utente corrente.
Gestione sessione C_OpenSession Apre una connessione tra un'applicazione e uno specifico token o configura un callback dell'applicazione per l'inserimento del token.
Gestione sessione C_CloseSession Chiude una sessione.
Gestione sessione C_CloseAllSessions Chiude tutte le sessioni con un token.
Gestione sessione C_GetSessionInfo Ottiene le informazioni sulla sessione.
Gestione sessione C_GetOperationState Ottiene lo stato delle operazioni crittografiche di una sessione.
Gestione sessione C_SetOperationState Imposta lo stato delle operazioni crittografiche di una sessione.
Gestione sessione C_Login Esegue l'accesso in un token.
Gestione sessione C_Logout Esegue la disconnessione da un token.
Gestione oggetti C_CreateObject 1 Crea un oggetto.
Gestione oggetti C_CopyObject Crea una copia di un oggetto.
Gestione oggetti C_DestroyObject Elimina un oggetto.
Gestione oggetti C_GetObjectSize Ottiene la dimensione di un oggetto in byte.
Gestione oggetti Valore C_GetAttribute Ottiene un valore di attributo di un oggetto.
Gestione oggetti Valore C_SetAttribute Modifica un valore di attributo di un oggetto. È possibile modificare solo gli attributi booleani.
Gestione oggetti C_FindObjectsInit Inizializza un'operazione di ricerca oggetto.
Gestione oggetti C_FindObjects Continua un'operazione di ricerca oggetto.
Gestione oggetti C_FindObjectsFinal Termina un'operazione di ricerca oggetto.
Crittografia C_EncryptInit Inizializza un'operazione di crittografia.
Crittografia C_Crittografa Crittografa i dati di una singola parte.
Crittografia C_EncryptUpdate Continua un'operazione di crittografia di più parti.
Crittografia C_EncryptFinal Termina un'operazione di crittografia di più parti.
Decrittografia C_DecryptInit Inizializza un'operazione di decrittografia.
Decrittografia C_decodifica Decrittografa i dati crittografati di una singola parte.
Decrittografia C_DecryptUpdate Continua un'operazione di decrittografia di più parti.
Decrittografia C_DecryptFinal Termina un'operazione di decrittografia di più parti.
Gestione dei messaggi C_DigestInit Inizializza un'operazione di digest dei messaggi.
Gestione dei messaggi C_Digest Esegue il digest di dati di una singola parte. La lunghezza dei dati di input non può essere zero e il puntatore che punta all'ubicazione dei dati di input non può essere NULL.
Gestione dei messaggi C_DigestUpdate Continua un'operazione di digest di più parti. La lunghezza dei dati di input non può essere zero e il puntatore che punta all'ubicazione dei dati di input non può essere NULL.
Gestione dei messaggi C_DigestKey No Esegue il digest di una chiave.
Gestione dei messaggi C_DigestFinal Termina un'operazione di digest di più parti.
Firma e MACing C_SignInit Inizializza un'operazione di firma.
Firma e MACing C_Firma Firma i dati di una singola parte.
Firma e MACing C_SignUpdate Continua un'operazione di firma di più parti.
Firma e MACing C_SignFinal Termina un'operazione di firma di più parti.
Firma e MACing C_SignRecoverInit No Inizializza un'operazione di firma, in cui i dati vengono recuperati dalla firma.
Firma e MACing C_SignRecover No Firma i dati a parte singola, dove i dati vengono recuperati dalla firma.
Verifica di firme e MAC C_VerifyInit Inizializza un'operazione di verifica.
Verifica di firme e MAC Verifica Verifica una firma sui dati di una singola parte.
Verifica di firme e MAC C_VerifyUpdate Continua un'operazione di verifica di più parti.
Verifica di firme e MAC C_VerifyFinal Termina un'operazione di verifica di più parti.
Verifica di firme e MAC C_VerifyRecoverInit No Inizializza un'operazione di verifica, dove i dati vengono ripristinati dalla firma.
Verifica di firme e MAC C_VerifyRecover No Verifica una firma sui dati di una singola parte, dove i dati vengono ripristinati dalla firma.
Funzioni crittografiche a doppio scopo C_DigestEncryptUpdate Continua le operazioni di digest e crittografia di più parti simultanee.
Funzioni crittografiche a doppio scopo C_DecryptDigestUpdate Continua le operazioni di digest e decrittografia di più parti simultanee.
Funzioni crittografiche a doppio scopo C_SignEncryptUpdate Continua le operazioni di firma e crittografia di più parti simultanee.
Funzioni crittografiche a doppio scopo C_DecryptVerifyUpdate Continua le operazioni di decrittografia e verifica di più parti simultanee.
Gestione chiavi C_GenerateKey Genera una chiave segreta.
Gestione chiavi Coppia C_GenerateKey Genera una coppia di chiavi pubblica o privata.
Gestione chiavi C_WrapKey Impacchetta (crittografa) una chiave.
Gestione chiavi C_UnwrapKey Spacchetta (decrittografa) una chiave.
Gestione chiavi C_DeriveKey Deriva una chiave da una chiave di base.
Generazione numero casuale C_SeedRandom No Aggiunge materiale di seeding al generatore di numeri casuale.
Generazione numero casuale C_GenerateRandom Genera dei dati casuali. La lunghezza dei dati casuali non può essere zero e il puntatore che punta alla posizione dei dati casuali non può essere NULL.
Gestione di funzioni parallela C_GetFunctionStatus No Funzione legacy che restituisce sempre CKR_FUNCTION_NOT_PARALLEL.
Gestione di funzioni parallela C_CancelFunction No Funzione legacy che restituisce sempre CKR_FUNCTION_NOT_PARALLEL.

1: l'implementazione corrente della funzione C_CreateObject supporta oggetti chiave segreta, oggetti chiave privata, oggetti chiave pubblica, oggetti dati, oggetti certificato chiave pubblica X.509, oggetti certificato chiave pubblica WTLS e oggetti certificato attributo X.509.

Meccanismi supportati

Un meccanismo viene indicato come un processo per implementare un'operazione crittografica. Può variare a seconda del livello di firmware nella scheda crittografica. La seguente tabella mostra i meccanismi supportati e come sono correlati alle categorie di funzioni Cryptoki comuni.

Tabella 2. Descrive i meccanismi PKCS #11 supportati
Gruppo di funzioni Meccanismi supportati
Codificare e decodificare. CKM_RSA_PKCS1, CKM_RSA_PKCS_OAEP1, CKM_AES_ECB, CKM_CBC, CKM_AES_CBC_PAD, CKM_DES3_ECB, CKM_DES3_CBC, CKM_DES3_CBC_PAD
Firma e verifica. CKM_RSA_PKCS1, CKM_RSA_PKCS_PSS1, CKM_RSA_X9_311, CKM_SHA1_RSA_PKCS, CKM_SHA256_RSA_PKCS, CKM_SHA224_RSA_PKCS, CKM_SHA384_RSA_PKCS, CKM_SHA512_RSA_PKCS, CKM_SHA1_RSA_PKCS_PSS, CKM_SHA224_RSA_PKCS_PSS, CKM_SHA256_RSA_PKCS_PSS, CKM_SHA384_RSA_PKCS_PSS, CKM_SHA512_RSA_PKCS_PSS, CKM_SHA1_RSA_X9_31, CKM_DSA1, CKM_DSA_SHA1, CKM_ECDSA1, CKM_ECDSA_SHA1, CKM_ECDSA_SHA224, CKM_ECDSA_SHA256, CKM_ECDSA_SHA384, CKM_ECDSA_SHA512, CKM_SHA1_HMAC, CKM_SHA256_HMAC, CKM_SHA384_HMAC, CKM_SHA512_HMAC, CKM_SHA512_224_HMAC, CKM_SHA512_256_HMAC, CKM_IBM_ED25519_SHA512, CKM_IBM_ED448_SHA3, CKM_IBM_DILITHIUM2
Digest. CKM_SHA_1, CKM_SHA224, CKM_SHA256, CKM_SHA384, CKM_SHA512, CKM_SHA512_224, CKM_SHA512_256
Generare la chiave o generare la coppia di chiavi. CKM_RSA_PKCS_KEY_PAIR_GEN, CKM_RSA_X9_31_KEY_PAIR_GEN, CKM_DSA_KEY_PAIR_GEN, CKM_DSA_PARAMETER_GEN, CKM_EC_KEY_PAIR_GEN (CKM_ECDSA_KEY_PAIR_GEN), CKM_DH_PKCS_KEY_PAIR_GEN, CKM_DH_PKCS_PARAMETER_GEN, CKM_GENERIC_SECRET_KEY_GEN, CKM_AES_KEY_GEN, CKM_DES2_KEY_GEN, CKM_DES3_KEY_GEN, CKM_IBM_DILITHIUM
Impacchettare e scartare. CKM_RSA_PKCS, CKM_RSA_PKCS_OAEP, CKM_AES_ECB, CKM_AES_CBC, CKM_CBC_PAD, CKM_DES3_ECB, CKM_DES3_CBC, CKM_DES3_CBC_PAD
Derivare. CKM_ECDH1_DERIVE, CKM_DH_PKCS_DERIVE, CKM_DES3_ECB_ENCRYPT_DATA, CKM_SHA1_KEY_DERIVATION, CKM_SHA224_KEY_DERIVATION, CKM_SHA256_KEY_DERIVATION, CKM_SHA384_KEY_DERIVATION, CKM_SHA512_KEY_DERIVATION, TCKM_derivation

1: questo meccanismo supporta solo le operazioni a parte singola che non sono in grado di utilizzare alcuna delle funzioni Update Cryptotoki, come C_EncryptUpdate, C_DecryptUpdate e C_DigestUpdate.

2: questo meccanismo non è supportato dalla scheda di crittografia IBM 4768 e non è disponibile per le operazioni C_SignUpdate e C_VerifyUpdate.

Attributi e tipi di chiavi supportati

Gli attributi PKCS #11 definiscono le caratteristiche dell'oggetto che impostano il modo in cui un oggetto può essere utilizzato e a cui è possibile accedere. La seguente tabella mostra gli attributi supportati e la loro relazione con i diversi tipi di chiave supportati.

Tabella 3. Attributi e tipi di chiavi supportati
Attributo Descrizione Tipi di chiave supportati
CKA_BASE Parametro dominio DSA e utilizzato per C_CreateObject. Base g. chiavi private DSA, chiavi pubbliche DSA
CATEGORIA_CERTIFICATO_CKA_ Utilizzato per indicare se un certificato memorizzato è un certificato utente per il quale la chiave privata corrispondente è disponibile sul token ("utente token"), un certificato CA ("autorità")o un altro certificato di entità finale ("altra entità"). Il valore predefinito è CK_CERTIFICATE_CATEGORY_UNSPECIFIED. Non applicabile
TIPO_CERTIFICATE_CKA_ Deve essere specificato quando l'oggetto certificato viene creato con C_CreateObject. I tipi di certificato sono la chiave pubblica X.509, il certificato della chiave pubblica WTLS e il certificato attributo X.509. Non applicabile
VALORE_CHECK_CKA Il checksum della chiave o del certificato. chiavi AES, chiavi DES
CLASSE_CKA Classe oggetto (tipo) ed è comune per tutti gli oggetti. Chiavi private EC, chiavi pubbliche EC, chiavi private RSA, chiavi pubbliche RSA, chiavi private DH, chiavi pubbliche DH, chiavi private DSA, chiavi pubbliche DSA, chiavi AES, chiavi DES, chiavi generiche
COEFFICENTE_CKA Utilizzato per C_CreatObject. Chiavi private RSA
CKA_COPYABLE Se impostato su CKA_TRUE, l'oggetto può essere copiato utilizzando C_CopyObject. Chiavi private EC, chiavi pubbliche EC, chiavi private RSA, chiavi pubbliche RSA, chiavi private DH, chiavi pubbliche DH, chiavi private DSA, chiavi pubbliche DSA, chiavi AES, chiavi DES, chiavi generiche
CKA_DECRYPT CK_TRUE se la chiave supporta la decrittografia. Chiavi private EC, chiavi private RSA, chiavi private DH, chiavi private DSA, chiavi AES, chiavi DES, chiavi generiche
RICAVA CK_TRUE se la chiave supporta la derivazione della chiave (altre chiavi possono essere derivate da questa chiave). Il valore predefinito è CK_FALSE. Chiavi private EC, chiavi pubbliche EC, chiavi private RSA, chiavi pubbliche RSA, chiavi private DH, chiavi pubbliche DH, chiavi private DSA, chiavi pubbliche DSA, chiavi AES, chiavi DES, chiavi generiche
CKA_EC_PARAMS (CKA_ECDSA_PARAMS) Codifica DER di un valore parametri ANSI X9.62. Chiavi private EC, chiavi pubbliche EC
PUNTO_EC_CKA Codifica DER del valore Q dell'ECPoint ANSI X9.62. Chiavi pubbliche EC
CODIFICA_CKI CK_TRUE se la chiave supporta la crittografia. chiavi pubbliche EC, chiavi pubbliche RSA, chiavi pubbliche DH, chiavi pubbliche DSA, chiavi AES, chiavi DES, chiavi generiche
DATA_END_CK Data di fine per il certificato o la chiave. Il valore predefinito è vuoto. Chiavi private EC, chiavi pubbliche EC, chiavi private RSA, chiavi pubbliche RSA, chiavi private DH, chiavi pubbliche DH, chiavi private DSA, chiavi pubbliche DSA, chiavi AES, chiavi DES, chiavi generiche
ESTRAIBILE CK_TRUE se la chiave è estraibile e può essere protetta. Chiavi private EC, chiavi private RSA, chiavi private DH, chiavi private DSA, chiavi AES, chiavi DES, chiavi generiche
CKA_EXPONENT_1 Utilizzare per C_CreateObject. Esponente privato d modulo q-1. Chiavi private RSA
CKA_EXPONENT_2 Utilizzare per C_CreateObject. Coefficiente CRT q-1 mod p. Chiavi private RSA
CKA_HASH_OF_ISSUER_PUBLIC_KEY Hash della chiave pubblica dell'emittente per un certificato. Il valore predefinito è vuoto. Non applicabile
CKA_HASH_OF_SUBJECT_PUBLIC_KEY Hash della chiave pubblica dell'oggetto per un certificato. Il valore predefinito è vuoto. Non applicabile
CKA_IBM_PQC_PARAMS Parametri di supporto per i meccanismi di crittografia post - quantistica. Nel caso del meccanismo Dilithium CKM_IBM_DILITHIUM, fornisce un OID (marshaled object identifier) che rappresenta la forza dell'algoritmo Dilithium da utilizzare. Attualmente, è supportato solo il livello di Dilithium 4 round 2. Chiavi Dilithium
CKA_IBM_USE_AS_DATA Un oggetto viene utilizzato per operazioni di hash o di derivazione chiave quando CK_TRUE Chiavi private EC, chiavi pubbliche EC
ID CKA L'identificativo chiave per la chiave o la coppia di chiavi pubblica o privata. Il valore predefinito è vuoto. Chiavi private EC, chiavi pubbliche EC, chiavi private RSA, chiavi pubbliche RSA, chiavi private DH, chiavi pubbliche DH, chiavi private DSA, chiavi pubbliche DSA, chiavi AES, chiavi DES, chiavi generiche
EMITTENTE Codifica DER del nome dell'emittente del certificato. Il valore predefinito è vuoto. Non applicabile
CKA_JAVA_MIDP_SECURITY_DOMAIN Dominio di sicurezza MIDP Java per un certificato. Il valore predefinito è CK_SECURITY_DOMAIN_UNSPECIFIED. Non applicabile
TIPO_CHIAVE_CA Tipo di chiave. Chiavi private EC, chiavi pubbliche EC, chiavi private RSA, chiavi pubbliche RSA, chiavi private DH, chiavi pubbliche DH, chiavi private DSA, chiavi pubbliche DSA, chiavi AES, chiavi DES, chiavi generiche
ETICHETTA_CKA Descrizione dell'oggetto. Il valore predefinito è vuoto. Chiavi private EC, chiavi pubbliche EC, chiavi private RSA, chiavi pubbliche RSA, chiavi private DH, chiavi pubbliche DH, chiavi private DSA, chiavi pubbliche DSA, chiavi AES, chiavi DES, chiavi generiche
CKA_LOCALE CK_TRUE solo se la chiave è stata generata localmente (sul token) con una chiamata C_GenerateKey o C_GenerateKeyPair o creata con una chiamata C_CopyObject come copia di una chiave che aveva l'attributo CKA_LOCAL impostato su CK_TRUE. Chiavi private EC, chiavi pubbliche EC, chiavi private RSA, chiavi pubbliche RSA, chiavi private DH, chiavi pubbliche DH, chiavi private DSA, chiavi pubbliche DSA, chiavi AES, chiavi DES, chiavi generiche
CKA_MODIFICABILE Impostare su CK_TRUE se l'oggetto può essere modificato. Chiavi private EC, chiavi pubbliche EC, chiavi private RSA, chiavi pubbliche RSA, chiavi private DH, chiavi pubbliche DH, chiavi private DSA, chiavi pubbliche DSA, chiavi AES, chiavi DES, chiavi generiche
CKA_MODULO Modulo n. Chiavi private RSA
BIT_MODULO_CKA_ Lunghezza, in bit, del modulo n. Chiavi pubbliche RSA
CKA_NAME_HASH_ALGORITHM Definisce il meccanismo utilizzato per calcolare l'hash delle chiavi pubbliche Subject e Issuer per un certificato. Il valore predefinito è SHA-1. Non applicabile
CKA_PRIMO Parametro dominio DSA e utilizzato per C_CreateObject. Prime p (da 512 a 2048 bit in passi di 64 bit). chiavi private DSA, chiavi pubbliche DSA
CKA_PRIME_1 Utilizzato per C_CreateObject. Numero primo q. Chiavi private RSA
CKA_PRIME_2 Utilizzato per C_CreateObject. Esponente privato d modulo p-1. Chiavi private RSA
CKA_PRIVATO CK_TRUE se l'oggetto è un oggetto privato; CK_FALSE se l'oggetto è un oggetto pubblico. Il valore predefinito è specifico del token e può dipendere dai valori di altri attributi dell'oggetto. Chiavi private EC, chiavi pubbliche EC, chiavi private RSA, chiavi pubbliche RSA, chiavi private DH, chiavi pubbliche DH, chiavi private DSA, chiavi pubbliche DSA, chiavi AES, chiavi DES, chiavi generiche
CKA_PRIVATE_EXPONENT Utilizzato per C_CreateObject. Numero primo p. Chiavi private RSA
CKA_PUBLIC_EXPONENT Esponente pubblico e. chiavi private RSA, chiavi pubbliche RSA
CKA_PUBLIC_KEY_INFO Codifica DER di SubjectPublicKeyInfo per la chiave pubblica. Il valore deriva dai dati chiave pubblica sottostanti ed è vuoto per impostazione predefinita. chiavi pubbliche RSA, chiavi pubbliche EC, chiavi pubbliche Dilithium
SENSIBILE CK_TRUE se la chiave è sensibile. Chiavi private EC, chiavi private RSA, chiavi private DH, chiavi private DSA, chiavi AES, chiavi DES, chiavi generiche
NUMERO_SERIALE_CKA Codifica DER del numero di serie del certificato. Il valore predefinito è vuoto. Non applicabile
CKA_SIGN CK_TRUE se la chiave supporta le firme dove la firma è un'appendice ai dati. Chiavi private EC, chiavi private RSA, chiavi private DH, chiavi private DSA, chiavi AES, chiavi DES, chiavi generiche
DATA_INIZIO_CKA La data di inizio per il certificato o la chiave. Il valore predefinito è vuoto. Chiavi private EC, chiavi pubbliche EC, chiavi private RSA, chiavi pubbliche RSA, chiavi private DH, chiavi pubbliche DH, chiavi private DSA, chiavi pubbliche DSA, chiavi AES, chiavi DES, chiavi generiche
SOGGETTO Codifica DER del nome del soggetto del certificato o della chiave. Chiavi private EC, chiavi pubbliche EC, chiavi private RSA, chiavi pubbliche RSA, chiavi private DH, chiavi pubbliche DH, chiavi private DSA, chiavi pubbliche DSA
CKA_SUBPRIME Parametro dominio DSA e utilizzato per C_CreateObject. Subprime q (160 bit per p < = 1024 bit, 224 bit o 256 bit per p> 1024 bit). chiavi private DSA, chiavi pubbliche DSA
TOKEN CK_TRUE se l'oggetto è un oggetto token; CK_FALSE se l'oggetto è un oggetto sessione. Chiavi private EC, chiavi pubbliche EC, chiavi private RSA, chiavi pubbliche RSA, chiavi private DH, chiavi pubbliche DH, chiavi private DSA, chiavi pubbliche DSA, chiavi AES, chiavi DES, chiavi generiche
CKA_TRUSTED Il certificato o la chiave possono essere ritenuti attendibili per l'applicazione per la quale sono stati creati. chiavi pubbliche EC, chiavi pubbliche RSA, chiavi pubbliche DH, chiavi pubbliche DSA, chiavi AES, chiavi DES, chiavi generiche
CKA_UNWRAP CK_TRUE se la chiave supporta lo spacchettamento (può essere utilizzato per spacchettare altre chiavi). Chiavi private EC, chiavi private RSA, chiavi private DH, chiavi private DSA, chiavi AES, chiavi DES, chiavi generiche
URL CKA L'URL in cui è possibile ottenere il certificato completo. Il valore predefinito è vuoto. Non applicabile
CKA_VALORE Byte del certificato codificati o byte della chiave quando si utilizza C_CreateObject. Chiavi private EC, chiavi pubbliche DSA, chiavi private DSA, chiavi private ED25519, chiavi private ED448, chiavi AES, chiavi DES
CKA_VALUE_LEN Lunghezza, in byte, del valore chiave. chiavi AES
CKA_VERIFY CK_TRUE se la chiave supporta la verifica in cui la firma è un'appendice dei dati. chiavi pubbliche EC, chiavi pubbliche RSA, chiavi pubbliche DH, chiavi pubbliche DSA, chiavi AES, chiavi DES, chiavi generiche
IMPACCHETTAMENTO CK_TRUE se la chiave supporta l'impacchettamento (può essere utilizzato per impacchettare altre chiavi). chiavi pubbliche EC, chiavi pubbliche RSA, chiavi pubbliche DH, chiavi pubbliche DSA, chiavi AES, chiavi DES, chiavi generiche
CKA_WRAP_WITH_TRUSTED CK_TRUE se la chiave può essere protetta solo con una chiave di protezione che ha CKA_TRUSTED impostato su CK_TRUE. Il valore predefinito è CK_FALSE. Chiavi private EC, chiavi private RSA, chiavi private DH, chiavi private DSA, chiavi AES, chiavi DES, chiavi generiche
APPLICAZIONE_CKA Descrizione dell'applicazione che gestisce l'oggetto (valore predefinito vuoto) Non applicabile
ID_OGGETTO_CKA Codifica DER dell'identificativo oggetto che indica il tipo di oggetto dati (valore predefinito vuoto) Non applicabile
PROPRIETA_CKA Codifica DER del campo del soggetto del certificato dell'attributo. Differente dall'attributo CKA_SUBJECT contenuto nei certificati CKC_X_509, in quanto la sintassi ASN.1 e la codifica sono differenti. Non applicabile
Emittente CKA_AC_ISSUER Codifica DER del campo emittente del certificato dell'attributo. Questo attributo è diverso dall'attributo CKA_ISSUER contenuto nei certificati CKC_X_509 in quanto la sintassi e la codifica ASN.1 sono differenti. (valore predefinito vuoto) Non applicabile
TIPO_ATTR_CKA_ Codifica BER di una sequenza di valori di identificativi oggetto corrispondenti ai tipi di attributo contenuti nel certificato. Quando presente, questo campo offre alle applicazioni l'opportunità di cercare un particolare certificato attributo senza recuperare ed analizzare il certificato stesso. (valore predefinito vuoto) Non applicabile

Curve supportate

La libreria PKCS #11 supporta tipi limitati di curve per determinati meccanismi. La seguente tabella elenca i nomi di curva supportati per meccanismi differenti. Il numero nel nome della curva indica il bitcount principale supportato.

Curve supportate per la creazione di chiavi EC (Elliptic Curve)

Il meccanismo CKM_EC_KEY_PAIR_GEN è supportato quando si richiama la funzione C_GenerateKeyPair per generare i tasti EC (Elliptic Curve). I parametri del nome della curva devono essere specificati come OID (object identifier) utilizzando CKA_EC_PARAMS. È possibile ottenere l'OID ricercando il nome della curva nel repository OID.

Tabella 4. Tipi di curva supportati per la generazione delle chiavi EC
meccanismo PKCS #11 Tipi di curva supportati Nomi curva supportati
CKM_EC_KEY_PAIR_GEN Curve NIST(National Institute of Standards and Technology)
  • P-192, noto anche come secp192r1 e prime192v1.
  • P-224, noto anche come secp224r1.
  • P-256, noto anche come secp256r1 e prime256v1.
  • P-384, noto anche come secp384r1.
  • P-521, noto anche come secp521r.
CKM_EC_KEY_PAIR_GEN Curve del pool di cervelli regolari
  • BP-160R, noto anche come brainpoolP160r1.
  • BP-192R, noto anche come brainpoolP192r1.
  • BP-224R, noto anche come brainpoolP224r1.
  • BP-256R, noto anche come brainpoolP256r1.
  • BP-320R, noto anche come brainpoolP320r1.
  • BP-384R, noto anche come brainpoolP384r1.
  • BP-512R, noto anche come brainpoolP512r1.
CKM_EC_KEY_PAIR_GEN Curve BP(Twisted Brain pool)
  • BP-160T, noto anche come brainpoolP160t1.
  • BP-192T, noto anche come brainpoolP192t1.
  • BP-224T, noto anche come brainpoolP224t1.
  • BP-256T, noto anche come brainpoolP256t1.
  • BP-320T, noto anche come brainpoolP320t1.
  • BP-384T, noto anche come brainpoolP384t1.
  • BP-512T, noto anche come brainpoolP512t1.
CKM_EC_KEY_PAIR_GEN Standard per curve SEC(Efficient Cryptography)
  • secp256k1
CKM_EC_KEY_PAIR_GEN Curve Edwards
  • Ed25519
CKM_EC_KEY_PAIR_GEN Curve Edwards
  • Ed448

Curve supportate per crittografare gli asset digitali e generare firme digitali

Le seguenti curve sono supportate per i meccanismi correlati all'asset digitale e alla firma digitale.

Tabella 5. Tipi di curva supportati per la codifica di firme e asset digitali
Standard o schema meccanismo PKCS #11 Tipi di curva supportati Nomi curva supportati
BIP32/BIP44 CKM_IBM_BTC_DERIVE Standard per curve SEC(Efficient Cryptography)
  • secp256k1
SLIP10 CKM_IBM_BTC_DERIVE Curve NIST(National Institute of Standards and Technology)
  • P-256, noto anche come secp256r1 e prime256v1
SLIP10 CKM_IBM_BTC_DERIVE Standard per curve SEC(Efficient Cryptography)
  • secp256k1
SLIP10 CKM_IBM_BTC_DERIVE Curve Edwards
  • Ed25519
EdDSA CKM_IBM_ED25519_SHA512 Curve Edwards
  • Ed25519
Schnorr CKM_IBM_ECDSA_ALTRO Standard per curve SEC(Efficient Cryptography)
  • secp256k1
Schnorr CKM_IBM_ECDSA_ALTRO Curve NIST(National Institute of Standards and Technology)
  • P-256, noto anche come secp256r1 e prime256v1
Schnorr CKM_IBM_ECDSA_ALTRO Curve del pool di cervelli regolari
  • BP-256R, noto anche come brainpoolP256r1
Schnorr CKM_IBM_ECDSA_ALTRO Curve BP(Twisted Brain pool)
  • BP-256T, noto anche come brainpoolP256t1
Schnorr ECSG_IBM_ECSDSA_S256
  • secp256r1
  • secp256k1
  • BP-256R, noto anche come brainpoolP256r1
  • BP-256T, noto anche come brainpoolP256t1
Schnorr-Zilliqa ECSG_IBM_ECSDSA_COMPR_MULTI
  • secp256r1
  • secp256k1
  • BP-256R, noto anche come brainpoolP256r1
  • BP-256T, noto anche come brainpoolP256t1

Riferimento API PKCS #11 standard

Per esaminare la documentazione standard PKCS #11 , consultare: