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.
Categoria | funzione PKCS #11 | Implementato? (sì o no) | Descrizione |
---|---|---|---|
Utilizzo generico | C_Initialize | Sì | Inizializza Cryptoki. |
Utilizzo generico | C_Finalize | Sì | Ripulisce varie risorse associate a Cryptoki. |
Utilizzo generico | C_GetInfo | Sì | Ottiene informazioni generali su Cryptoki. |
Utilizzo generico | C_GetFunctionList | Sì | Ottiene i punti di ingresso delle funzioni libreria Cryptoki. |
Gestione slot e token | C_GetSlotList | Sì | Ottiene un elenco di slot nel sistema. |
Gestione slot e token | C_GetSlotInfo | Sì | Ottiene informazioni su uno specifico slot. |
Gestione slot e token | C_GetTokenInfo | Sì | 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 | Sì | Ottiene un elenco di meccanismi supportati da un token. |
Gestione slot e token | C_GetMechanismInfo | Sì | Ottiene informazioni su uno specifico meccanismo. |
Gestione slot e token | C_InitToken | Sì | Inizializza un token. |
Gestione slot e token | C_InitPIN | Sì | Inizializza il PIN dell'utente normale. |
Gestione slot e token | C_SetPIN | Sì | Modifica il PIN dell'utente corrente. |
Gestione sessione | C_OpenSession | Sì | 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 | Sì | Chiude una sessione. |
Gestione sessione | C_CloseAllSessions | Sì | Chiude tutte le sessioni con un token. |
Gestione sessione | C_GetSessionInfo | Sì | Ottiene le informazioni sulla sessione. |
Gestione sessione | C_GetOperationState | Sì | Ottiene lo stato delle operazioni crittografiche di una sessione. |
Gestione sessione | C_SetOperationState | Sì | Imposta lo stato delle operazioni crittografiche di una sessione. |
Gestione sessione | C_Login | Sì | Esegue l'accesso in un token. |
Gestione sessione | C_Logout | Sì | Esegue la disconnessione da un token. |
Gestione oggetti | C_CreateObject | Sì1 | Crea un oggetto. |
Gestione oggetti | C_CopyObject | Sì | Crea una copia di un oggetto. |
Gestione oggetti | C_DestroyObject | Sì | Elimina un oggetto. |
Gestione oggetti | C_GetObjectSize | Sì | Ottiene la dimensione di un oggetto in byte. |
Gestione oggetti | Valore C_GetAttribute | Sì | Ottiene un valore di attributo di un oggetto. |
Gestione oggetti | Valore C_SetAttribute | Sì | Modifica un valore di attributo di un oggetto. È possibile modificare solo gli attributi booleani. |
Gestione oggetti | C_FindObjectsInit | Sì | Inizializza un'operazione di ricerca oggetto. |
Gestione oggetti | C_FindObjects | Sì | Continua un'operazione di ricerca oggetto. |
Gestione oggetti | C_FindObjectsFinal | Sì | Termina un'operazione di ricerca oggetto. |
Crittografia | C_EncryptInit | Sì | Inizializza un'operazione di crittografia. |
Crittografia | C_Crittografa | Sì | Crittografa i dati di una singola parte. |
Crittografia | C_EncryptUpdate | Sì | Continua un'operazione di crittografia di più parti. |
Crittografia | C_EncryptFinal | Sì | Termina un'operazione di crittografia di più parti. |
Decrittografia | C_DecryptInit | Sì | Inizializza un'operazione di decrittografia. |
Decrittografia | C_decodifica | Sì | Decrittografa i dati crittografati di una singola parte. |
Decrittografia | C_DecryptUpdate | Sì | Continua un'operazione di decrittografia di più parti. |
Decrittografia | C_DecryptFinal | Sì | Termina un'operazione di decrittografia di più parti. |
Gestione dei messaggi | C_DigestInit | Sì | Inizializza un'operazione di digest dei messaggi. |
Gestione dei messaggi | C_Digest | Sì | 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 | Sì | 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 | Sì | Termina un'operazione di digest di più parti. |
Firma e MACing | C_SignInit | Sì | Inizializza un'operazione di firma. |
Firma e MACing | C_Firma | Sì | Firma i dati di una singola parte. |
Firma e MACing | C_SignUpdate | Sì | Continua un'operazione di firma di più parti. |
Firma e MACing | C_SignFinal | Sì | 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 | Sì | Inizializza un'operazione di verifica. |
Verifica di firme e MAC | Verifica | Sì | Verifica una firma sui dati di una singola parte. |
Verifica di firme e MAC | C_VerifyUpdate | Sì | Continua un'operazione di verifica di più parti. |
Verifica di firme e MAC | C_VerifyFinal | Sì | 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 | Sì | Continua le operazioni di digest e crittografia di più parti simultanee. |
Funzioni crittografiche a doppio scopo | C_DecryptDigestUpdate | Sì | Continua le operazioni di digest e decrittografia di più parti simultanee. |
Funzioni crittografiche a doppio scopo | C_SignEncryptUpdate | Sì | Continua le operazioni di firma e crittografia di più parti simultanee. |
Funzioni crittografiche a doppio scopo | C_DecryptVerifyUpdate | Sì | Continua le operazioni di decrittografia e verifica di più parti simultanee. |
Gestione chiavi | C_GenerateKey | Sì | Genera una chiave segreta. |
Gestione chiavi | Coppia C_GenerateKey | Sì | Genera una coppia di chiavi pubblica o privata. |
Gestione chiavi | C_WrapKey | Sì | Impacchetta (crittografa) una chiave. |
Gestione chiavi | C_UnwrapKey | Sì | Spacchetta (decrittografa) una chiave. |
Gestione chiavi | C_DeriveKey | Sì | 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 | Sì | 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.
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.
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.
meccanismo PKCS #11 | Tipi di curva supportati | Nomi curva supportati |
---|---|---|
CKM_EC_KEY_PAIR_GEN | Curve NIST(National Institute of Standards and Technology) |
|
CKM_EC_KEY_PAIR_GEN | Curve del pool di cervelli regolari |
|
CKM_EC_KEY_PAIR_GEN | Curve BP(Twisted Brain pool) |
|
CKM_EC_KEY_PAIR_GEN | Standard per curve SEC(Efficient Cryptography) |
|
CKM_EC_KEY_PAIR_GEN | Curve Edwards |
|
CKM_EC_KEY_PAIR_GEN | Curve Edwards |
|
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.
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) |
|
SLIP10 | CKM_IBM_BTC_DERIVE | Curve NIST(National Institute of Standards and Technology) |
|
SLIP10 | CKM_IBM_BTC_DERIVE | Standard per curve SEC(Efficient Cryptography) |
|
SLIP10 | CKM_IBM_BTC_DERIVE | Curve Edwards |
|
EdDSA | CKM_IBM_ED25519_SHA512 | Curve Edwards |
|
Schnorr | CKM_IBM_ECDSA_ALTRO | Standard per curve SEC(Efficient Cryptography) |
|
Schnorr | CKM_IBM_ECDSA_ALTRO | Curve NIST(National Institute of Standards and Technology) |
|
Schnorr | CKM_IBM_ECDSA_ALTRO | Curve del pool di cervelli regolari |
|
Schnorr | CKM_IBM_ECDSA_ALTRO | Curve BP(Twisted Brain pool) |
|
Schnorr | ECSG_IBM_ECSDSA_S256 |
|
|
Schnorr-Zilliqa | ECSG_IBM_ECSDSA_COMPR_MULTI |
|
Riferimento API PKCS #11 standard
Per esaminare la documentazione standard PKCS #11 , consultare: