Tipi di chiave, algoritmi e operazioni
Key Vault supporta due tipi di risorse: insiemi di credenziali e moduli di protezione hardware gestiti. Entrambi i tipi di risorse supportano diverse chiavi di crittografia. Per un riepilogo dei tipi di chiave supportati e dei tipi di protezione per ogni tipo di risorsa, vedere Informazioni sulle chiavi.
La tabella seguente mostra un riepilogo dei tipi di chiave e degli algoritmi supportati.
Tipi di chiave/dimensioni/curve | Crittografa/Decrittografa (Wrapping/Annullamento del wrapping) |
Firma/Verifica |
---|---|---|
EC-P256, EC-P256K, EC-P384, EC-P521 | N/D | ES256 ES256K ES384 ES512 |
RSA 2K, 3K, 4K | RSA1_5 RSA-OAEP RSA-OAEP-256 |
PS256 PS384 PS512 RS256 RS384 RS512 RSNULL |
AES a 128 bit, 256 bit (Solo modulo di protezione hardware gestito) |
AES-KW AES-GCM AES-CBC |
N/D |
Algoritmi EC
Gli identificatori di algoritmo seguenti sono supportati con le chiavi EC-HSM
Tipi di curva
- P-256: curva NIST P-256, definita in DSS FIPS PUB 186-4.
- P-256K: curva SEC SECP256K1, definita in SEC 2: Recommended Elliptic Curve Domain Parameters (SEC 2: parametri di dominio EC consigliati).
- P-384: curva NIST P-384, definita in DSS FIPS PUB 186-4.
- P-521: curva NIST P-521, definita in DSS FIPS PUB 186-4.
SIGN//VERIFY
- ES256 - ECDSA per digest e chiavi SHA-256 creati con la curva P-256. Questo algoritmo è descritto in RFC7518.
- ES256K - ECDSA per digest e chiavi SHA-256 creati con la curva P-256K. Questo algoritmo è in attesa di standardizzazione.
- ES384 - ECDSA per digest e chiavi SHA-384 creati con la curva P-384. Questo algoritmo è descritto in RFC7518.
- ES512 - ECDSA per digest e chiavi SHA-512 creati con la curva P-521. Questo algoritmo è descritto in RFC7518.
Algoritmi RSA
Gli identificatori di algoritmo seguenti sono supportati con le chiavi RSA e RSA-HSM
ESEGUI/NON ESEGUIRE IL WRAPPING DELLA CHIAVE, CRITTOGRAFA/DECRITTOGRAFA
- RSA1_5: crittografia della chiave RSAES-PKCS1-V1_5 [RFC3447]
- RSA-OAEP: RSAES con OAEP (Optimal Asymmetric Encryption Padding) [RFC3447] con i parametri predefiniti specificati da RFC 3447 nella sezione A.2.1. Tali parametri predefiniti usano una funzione hash di SHA-1 e una funzione di generazione della maschera MGF1 con SHA-1.
- RSA-OAEP-256: RSAES con OAEP (Optimal Asymmetric Encryption Padding) con una funzione hash SHA-256 e una funzione di generazione della maschera di MGF1 con SHA-256
SIGN//VERIFY
- PS256 - RSASSA-PSS tramite SHA-256 e MGF1 con SHA-256, come descritto in RFC7518.
- PS384 - RSASSA-PSS tramite SHA-384 e MGF1 con SHA-384, come descritto in RFC7518.
- PS512 - RSASSA-PSS tramite SHA-512 e MGF1 con SHA-512, come descritto in RFC7518.
- RS256: RSASSA-PKCS-v1_5 tramite SHA-256. Il valore di digest dell'applicazione fornito deve essere calcolato tramite SHA-256 e deve avere una lunghezza di 32 byte.
- RS384: RSASSA-PKCS-v1_5 tramite SHA-384. Il valore di digest dell'applicazione fornito deve essere calcolato tramite SHA-384 e deve avere una lunghezza di 48 byte.
- RS512: RSASSA-PKCS-v1_5 tramite SHA-512. Il valore di digest dell'applicazione fornito deve essere calcolato tramite SHA-512 e deve avere una lunghezza di 64 byte.
- RSNULL: vedere RFC2437, un caso di utilizzo specializzato per abilitare determinati scenari TLS.
Nota
La modalità di riempimento RSA-PSS è consigliata per prestazioni migliori. DigestInfo viene costruito sul lato server per le operazioni di firma generate dagli algoritmi RS256, RS384 e RS512.
Algoritmi di chiave simmetrica (solo modulo di protezione hardware gestito)
- AES-KW: wrapping delle chiavi AES (RFC3394).
- AES-GCM: crittografia AES in modalità contatore di Galois (NIST SP 800-38d)
- AES-CBC: crittografia AES in modalità Cipher Block Chaining (NIST SP 800-38a)
Nota
Gli algoritmi di firma e verifica delle operazioni devono corrispondere al tipo di chiave. In caso contrario, il servizio indicherà che le dimensioni della chiave non sono corrette.
Operazioni relative alle chiavi
Key Vault, incluso il modulo di protezione hardware gestito, supporta le operazioni seguenti sugli oggetti chiave:
- Create: consente al client di creare una chiave in Key Vault. Il valore della chiave viene generato da Key Vault e archiviato e non viene rilasciato al cliente. In Key Vault è possibile creare chiavi asimmetriche.
- Import: consente al client di importare una chiave esistente in Key Vault. Le chiavi asimmetriche possono essere importate in Key Vault usando una serie di metodi di creazione di pacchetti diversi all'interno di un costrutto JWK.
- Update: consente a un client con autorizzazioni sufficienti di modificare i metadati (attributi chiave) associati a una chiave archiviata in precedenza in Key Vault.
- Delete: consente a un client con autorizzazioni sufficienti di eliminare una chiave da Key Vault.
- List: consente a un client di elencare tutte le chiavi di un determinato insieme di credenziali.
- List versions: consente a un client di elencare tutte le versioni di una data chiave in un determinato insieme di credenziali.
- Get: consente a un client di recuperare le parti pubbliche di una determinata chiave in un insieme di credenziali.
- Backup: esporta una chiave in un formato protetto.
- Ripristina: importa una chiave precedentemente sottoposta a backup.
- Rilascia: rilascia in modo sicuro una chiave per il codice autorizzato in esecuzione all'interno di un ambiente di calcolo riservato. Richiede un'attestazione che l'ambiente di esecuzione attendibile soddisfi i requisiti del release_policy della chiave.
- Ruotare: ruotare una chiave esistente generando una nuova versione della chiave (solo Key Vault).
Per altre informazioni, vedere le operazioni relative alle chiavi nell'articolo di riferimento all'API REST di Key Vault.
Dopo aver creato una chiave in Key Vault, sarà possibile eseguire le operazioni crittografiche seguenti usando tale chiave:
- Firma e verifica: in senso stretto, si tratta di "firmare hash" o "verificare hash", poiché Key Vault non supporta l'hashing del contenuto durante la creazione della firma. Le applicazioni devono eseguire l'hashing dei dati per la firma locale e quindi richiedere a Key Vault la firma dell'hash. La verifica degli hash firmati è supportata come operazione utile per le applicazioni che non possono accedere al materiale delle chiavi [pubblico]. Per ottenere prestazioni ottimali delle applicazioni, è consigliabile eseguire le operazioni VERIFY in locale.
- Crittografia tramite chiave/Wrapping: una chiave archiviata in Key Vault può essere usata per proteggere un'altra chiave, in genere una chiave CEK (Content Encryption Key) simmetrica. Quando la chiave in Key Vault è asimmetrica, viene usata la crittografia della chiave. Ad esempio, RSA-OAEP e le operazioni WRAPKEY/UNWRAPKEY equivalgono a ENCRYPT/DECRYPT. Quando la chiave in Key Vault è simmetrica, viene usato il wrapping della chiave, ad esempio AES-KW. L'operazione WRAPKEY è supportata come strumento utile per le applicazioni che non possono accedere al materiale delle chiavi [pubblico]. Per ottenere prestazioni ottimali dalle applicazioni, le operazioni WRAPKEY devono essere eseguite in locale.
- Crittografia e decrittografia: una chiave archiviata in Key Vault può essere usata per crittografare o decrittografare un singolo blocco di dati. Le dimensioni del blocco sono determinate dal tipo di chiave e dall'algoritmo di crittografia selezionato. L'operazione Encrypt viene fornita per comodità per le applicazioni che non possono accedere al materiale delle chiavi [pubblico]. Per prestazioni ottimali delle applicazioni, è consigliabile eseguire le operazioni ENCRYPT in locale.
Anche se WRAPKEY/UNWRAPKEY con chiavi asimmetriche possono sembrare superflue (in quanto equivalenti a ENCRYPT/DECRYPT), l'uso di operazioni distinte è importante. La distinzione assicura la separazione delle operazioni a livello di semantica e autorizzazioni e garantisce coerenza quando sono supportati altri tipi di chiave da parte del servizio.
Key Vault non supporta le operazioni EXPORT. Una volta effettuato il provisioning di una chiave nel sistema, la chiave non può essere estratta e il relativo materiale non può essere modificato. Tuttavia, è possibile che gli utenti di Key Vault richiedano la chiave per altri casi d'uso, ad esempio dopo che è stata eliminata. In casi di questo tipo, è possibile usare le operazioni BACKUP e RESTORE per esportare o importare la chiave in un formato protetto. Le chiavi create dall'operazione BACKUP non possono essere usate all'esterno di Key Vault. In alternativa, l'operazione IMPORT può essere usata a fronte di più istanze di Key Vault.
Gli utenti possono limitare le operazioni crittografiche supportate da Key Vault per ciascuna chiave usando la proprietà key_ops dell'oggetto JWK.
Per ulteriori informazioni sugli oggetti JWK, vedere JSON Web Key (JWK).
Operazioni dei criteri di rotazione delle chiavi
La rotazione automatica delle chiavi dell'insieme di credenziali può essere impostata configurando i criteri di rotazione automatica delle chiavi. È disponibile solo nella risorsa Key Vault.
- Ottenere i criteri di rotazione: recuperare la configurazione dei criteri di rotazione.
- Imposta criteri di rotazione: imposta la configurazione dei criteri di rotazione.
Attributi della chiave
Oltre al materiale della chiave,è possibile specificare gli attributi seguenti. In una richiesta JSON la parola chiave attributes e le parentesi graffe, '{' '}', sono obbligatorie anche se non sono stati specificati attributi.
- enabled boolean, facoltativo, il valore predefinito è true. Specifica se la chiave è abilitata e utilizzabile per le operazioni di crittografia. L’attributo abilitato viene utilizzato con nbf ed exp. Quando si verifica un'operazione tra nbf ed exp, questa verrà consentita solo se abilitato è impostato su vero. Le operazioni all'esterno della finestra nbf / exp non sono impostate automaticamente come non consentite, ad eccezione di decrypt, release, unwrap e verify.
- nbf: il valore predefinito IntDate facoltativo è adesso. L’attributo nbf (non precedente) identifica l'ora prima della quale la chiave NON DEVE essere usata per le operazioni di crittografia, ad eccezione di decrypt, release, unwrap e verify. L'elaborazione dell’attributo nbf richiede che la data/ora corrente SIA successiva o uguale a data/ora non precedente elencata nell’attributo nbf. Key Vault PUÒ concedere un minimo margine temporale, in genere non più di qualche minuto, per tenere conto dello sfasamento di orario. Il valore DEVE essere un numero contenente un valore IntDate.
- nbf: il valore predefinito IntDate facoltativo è "per sempre". L’attributo exp (data di scadenza) identifica la data di scadenza in cui o precedentemente alla quale la chiave NON DEVE essere usata per l’operazione di crittografia, ad eccezione di decrypt, release, unwrap e verify. L'elaborazione dell’attributo exp richiede che la data/ora corrente SIA precedente a data/ora di scadenza elencata nell’attributo exp. Key Vault PUÒ concedere un minimo margine temporale, in genere non più di qualche minuto, per tenere conto dello sfasamento di orario. Il valore DEVE essere un numero contenente un valore IntDate.
Sono disponibili altri attributi di sola lettura che sono inclusi in una risposta che include gli attributi chiave:
- created: IntDate, facoltativo. L’attributo creato indica quando è stata creata questa versione della chiave. Il valore è null per le chiavi create prima dell'aggiunta di questo attributo. Il valore DEVE essere un numero contenente un valore IntDate.
- updated: IntDate, facoltativo. L’attributo aggiornato indica quando è stata aggiornata questa versione della chiave. Il valore è null per le chiavi che sono state aggiornate per l'ultima volta prima dell'aggiunta di questo attributo. Il valore DEVE essere un numero contenente un valore IntDate.
- hsmPlatform: stringa, facoltativa. Piattaforma del modulo di protezione hardware sottostante che protegge una chiave.
- Un valore hsmPlatform pari a 2 indica che la chiave è protetta dalla piattaforma del modulo di protezione hardware convalidata con FIPS 140 Livello 3 più recente.
- Un valore hsmPlatform pari a 1 indica che la chiave è protetta dalla piattaforma HSM convalidata fips 140 livello 2 precedente.
- Un valore hsmPlatform pari a 0 indica che la chiave è protetta da un modulo di crittografia software per modulo di protezione hardware FIPS 140 Livello 1.
- se questo non è impostato da un pool di moduli di protezione hardware gestiti, è protetto dalla piattaforma di modulo di protezione hardware convalidata FIPS 140 Livello 3 più recente.
È’importante notare che le chiavi sono associate al modulo di protezione hardware in cui sono state create. Le nuove chiavi vengono create e archiviate senza problemi nei nuovi moduli di protezione hardware. Anche se non è possibile eseguire la migrazione o il trasferimento delle chiavi, le nuove versioni delle chiavi si trovano automaticamente nei nuovi moduli di protezione hardware. Per altre informazioni su come eseguire la migrazione a una nuova chiave, vedere Come eseguire la migrazione dei carichi di lavoro chiave.
Per altre informazioni su IntDate e altri tipi di dati, vedere [Informazioni su chiavi, segreti e certificati: Tipi di dati.
Operazioni controllate in base a data e ora
Le chiavi non ancora valide e scadute, che non rientrano nella finestra nbf / exp, possono essere usate per le operazioni decrypt, release, unwrap e verify (non verrà restituito l'errore 403 Accesso negato). La logica per l'utilizzo di stato non ancora valido consiste nel consentire a una chiave di essere sottoposta a test prima dell'uso di produzione. La logica per l'utilizzo di stato scaduto consiste nel consentire operazioni di ripristino sui dati creati quando la chiave risultava valida. Inoltre, è possibile disabilitare l'accesso a una chiave usando i criteri di Key Vault, o aggiornando l’attributo chiave abilitato per falso.
Per altre informazioni sui tipi di dati, vedere Tipi di dati.
Per altre informazioni su altri possibili attributi, vedere JSON Web Key (JWK).
Tag della chiave
È possibile specificare metadati aggiuntivi specifici dell'applicazione sotto forma di tag. Key Vault supporta fino a 15 tag, ognuno dei quali può avere un nome di 256 caratteri e un valore di 256 caratteri.
Nota
Un chiamante può leggere i tag se ha l'autorizzazione list o get per la chiave.
Controllo di accesso per le chiavi
Controllo di accesso per le chiavi gestite da Key Vault fornito a livello di un Key Vault che funge da contenitore delle chiavi. È possibile controllare l'accesso alle chiavi usando il controllo degli accessi in base al ruolo di Key Vault (scelta consigliata) o il vecchio modello di autorizzazione dell'insieme di credenziali. Il modello di autorizzazione basato sui ruoli ha tre ruoli predefiniti per gestire le chiavi: "Key Vault Crypto Officer", "Key Vault Crypto User" e "Key Vault Service Encryption User" e può essere limitato a livello di sottoscrizione, gruppo di risorse o insieme di credenziali.
Autorizzazioni del modello di autorizzazione dei criteri di accesso dell'insieme di credenziali:
Autorizzazioni per le operazioni di gestione delle chiavi
- ottieni: leggere la parte pubblica di una chiave e i relativi attributi
- elenca: elencare le chiavi o le versioni di una chiave archiviata in un insieme di credenziali delle chiavi
- aggiorna: aggiornare gli attributi per una chiave
- crea: creare nuove chiavi
- importa: importare una chiave in un insieme di credenziali delle chiavi
- elimina: eliminare l'oggetto chiave
- recover: consente di recuperare una chiave eliminata
- backup: consente di eseguire il backup di una chiave in un insieme di credenziali delle chiavi
- ripristina: ripristinare una chiave precedentemente sottoposta a backup a un insieme di credenziali delle chiavi
Autorizzazioni per le operazioni di crittografia
- decrittografa: usare la chiave per non custodire una sequenza arbitraria di byte
- crittografa: usare la chiave per proteggere una sequenza arbitraria di byte
- non eseguire il wrapping della chiave: usare la chiave per custodire una chiave simmetrica
- esegui il wrapping della chiave: usare la chiave per custodire una chiave simmetrica
- verifica: usare la chiave per firmare digest
- firma: usare la chiave per firmare digest
Autorizzazioni per le operazioni con privilegi
- purge: consente di ripulire (eliminare definitivamente) una chiave eliminata
- release: rilasciare una chiave in un ambiente di calcolo riservato, che corrisponde al release_policy della chiave
Autorizzazioni per le operazioni dei criteri di rotazione
- rotate: ruotare una chiave esistente generando una nuova versione della chiave (solo Key Vault)
- get rotation policy: recuperare la configurazione dei criteri di rotazione
- set rotation policy: impostare la configurazione dei criteri di rotazione
Per altre informazioni sull'uso delle chiavi, vedere le operazioni relative alle chiavi in Key Vault REST API reference (Riferimenti sull'API REST di Key Vault).