Funzionalità CNG
CNG ha le funzionalità seguenti.
- Agilità crittografica
- Certificazione e conformità
- Supporto per Suite B
- Supporto legacy
- Supporto della modalità kernel
- Controllo
- Generatori di numeri casuali sostituibili
- Thread safety
- Modalità di funzionamento
Agilità crittografica
Una delle proposte chiave di valore di CNG è l'agilità crittografica, talvolta detta agnosticismo crittografico. La conversione dell'implementazione di protocolli come SSL (Secure Sockets Layer Protocol ) o TLS (Transport Layer Security ), CMS (S/MIME), IPsec, Kerberos e così via, in CNG, tuttavia, era necessaria per rendere questa capacità utile. A livello di CNG, era necessario fornire sostituzione e individuabilità per tutti i tipi di algoritmo (funzioni simmetriche, asimmetriche, hash), generazione di numeri casuali e altre funzioni di utilità. Le modifiche a livello di protocollo sono più significative perché in molti casi le API del protocollo necessarie per aggiungere la selezione dell'algoritmo e altre opzioni di flessibilità che non esistevano in precedenza.
CNG è disponibile per la prima volta in Windows Vista ed è posizionato per sostituire gli usi esistenti di CryptoAPI in tutto lo stack di software Microsoft. Gli sviluppatori di terze parti troveranno molte nuove funzionalità in CNG, tra cui:
- Un nuovo sistema di configurazione di crittografia, che supporta una migliore agilità crittografica.
- Astrazione più granulare per l'archiviazione delle chiavi (e separazione dell'archiviazione dalle operazioni degli algoritmi).
- Isolamento del processo per le operazioni con chiavi a lungo termine.
- Generatori di numeri casuali sostituibili.
- Sollievo dalle restrizioni di firma di esportazione.
- Thread-safety in tutto lo stack.
- API di crittografia in modalità kernel.
Inoltre, CNG include il supporto per tutti gli algoritmi Suite B necessari, inclusa la crittografia a curva ellittica (ECC). Le applicazioni CryptoAPI esistenti continueranno a funzionare man mano che diventa disponibile CNG.
Certificazione e conformità
Il CNG viene convalidato in FIPS (Federal Information Processing Standards) 140-2 ed è parte della destinazione della valutazione per la certificazione Criteri comuni di Windows. CNG è stato progettato per essere utilizzabile come componente in un sistema convalidato fips livello 2.
CNG è conforme ai requisiti di Criteri comuni archiviando e usando chiavi di lunga durata in un processo sicuro.
Supporto per Suite B
Una funzionalità importante di CNG è il supporto per gli algoritmi Suite B. Nel febbraio del 2005, l'Agenzia nazionale per la sicurezza (NSA) del Stati Uniti ha annunciato un insieme coordinato di crittografia simmetrica, accordo segreto asimmetrico (noto anche come scambio di chiavi), funzioni di firma digitale e hash per futuri usi del governo degli Stati Uniti chiamato Suite B. L'NSA ha annunciato che le implementazioni di Suite B certificate possono e verranno usate per la protezione delle informazioni designate come Top Secret, Secret e private information che, in passato, sono state descritte come Sensitive-But-Unclassified. Per questo motivo, il supporto di Suite B è molto importante per i fornitori di software applicativi e gli integratori di sistemi, nonché per Microsoft.
Tutti gli algoritmi suite B sono noti pubblicamente. Sono stati sviluppati al di fuori dell'ambito del segreto governativo storicamente associato allo sviluppo di algoritmi crittografici. In questo stesso intervallo di tempo, alcuni paesi e regioni europei hanno anche proposto gli stessi requisiti della Suite B per la protezione delle informazioni.
La crittografia Suite B consiglia di usare la curva ellittica Diffie-Hellman (ECDH) in molti protocolli esistenti, ad esempio Internet Key Exchange (IKE, principalmente usato in IPsec), TLS (Transport Layer Security ) e Secure MIME (S/MIME).
CNG include il supporto per Suite B che si estende a tutti gli algoritmi necessari: AES (tutte le dimensioni delle chiavi), la famiglia SHA-2 (SHA-256, SHA-384 e SHA-512) di algoritmi hash, ECDH e DSA (ECDSA) a curva ellittica rispetto alle curve prime standard NIST P-256, P-384 e P-521. Le curve binarie, le curve di Koblitz, le curve prime personalizzate e la curva ellittica Menezes-Qu-Vanstone (ECMQV) non sono supportate dai provider di algoritmi Microsoft inclusi in Windows Vista.
Supporto legacy
CNG fornisce supporto per il set corrente di algoritmi in CryptoAPI 1.0. Ogni algoritmo attualmente supportato in CryptoAPI 1.0 continuerà a essere supportato in CNG.
Supporto della modalità kernel
CNG supporta la crittografia in modalità kernel. Le stesse API vengono usate sia in modalità kernel che in modalità utente per supportare completamente le funzionalità di crittografia. Sia SSL/TLS che IPsec operano in modalità kernel oltre ai processi di avvio che usano CNG. Non tutte le funzioni CNG possono essere chiamate dalla modalità kernel. L'argomento di riferimento per le funzioni che non possono essere chiamate dalla modalità kernel in modo esplicito indica che la funzione non può essere chiamata dalla modalità kernel. In caso contrario, tutte le funzioni CNG possono essere chiamate dalla modalità kernel se il chiamante è in esecuzione in PASSIVE_LEVEL IRQL. Inoltre, alcune funzioni CNG in modalità kernel possono essere chiamate a DISPATCH_LEVEL IRQL, a seconda delle funzionalità del provider.
L'interfaccia del provider di supporto per la sicurezza del kernel Microsoft (Ksecdd.sys) è un modulo di crittografia basato su software generico che risiede a livello di modalità kernel di Windows. Ksecdd.sys viene eseguito come driver di esportazione in modalità kernel e fornisce servizi di crittografia tramite le interfacce documentate ai componenti del kernel. L'unico algoritmo del provider Microsoft predefinito non supportato da Ksecdd.sys è DSA.
Windows Server 2008 e Windows Vista: CNG non supporta algoritmi collegabili e provider in modalità kernel. Gli unici algoritmi di crittografia supportati disponibili in modalità kernel sono le implementazioni fornite da Microsoft tramite le API CNG in modalità kernel.
Controllo
Per rispettare alcuni dei requisiti di Criteri comuni oltre a garantire una sicurezza completa, molte azioni eseguite nel livello CNG vengono controllate nel provider di archiviazione chiavi software Microsoft (KSP). Microsoft KSP rispetta le linee guida seguenti per creare record di controllo nel log di sicurezza:
- È necessario controllare gli errori di generazione delle coppie chiave e chiave, inclusi gli errori di auto-test.
- È necessario controllare l'importazione e l'esportazione delle chiavi.
- È necessario controllare gli errori di distruzione delle chiavi.
- Le chiavi persistenti devono essere controllate quando vengono scritte e lette da file.
- È necessario controllare gli errori di verifica della coerenza a livello di coppia.
- Gli errori di convalida della chiave privata, se presenti, devono essere controllati, ad esempio i controlli di parità sulle chiavi 3DES.
- È necessario controllare gli errori di crittografia, decrittografia, hash, firma, verifica, scambio di chiavi e generazione di numeri casuali.
- È necessario controllare i self test crittografici.
In generale, se una chiave non ha un nome, si tratta di una chiave temporanea. Una chiave temporanea non viene salvata in modo permanente e microsoft KSP non genera record di controllo per le chiavi temporanee. Microsoft KSP genera record di controllo in modalità utente solo nel processo LSA. Nessun record di controllo viene generato dal CNG in modalità kernel. Gli amministratori devono configurare i criteri di controllo per ottenere tutti i log di controllo KSP dal log di sicurezza. Un amministratore deve eseguire la riga di comando seguente per configurare controlli aggiuntivi generati da KSP:
auditpol /set /subcategory:"altri eventi di sistema" /success:enable /failure:enable
Generatori di numeri casuali sostituibili
Un altro miglioramento fornito da CNG è la possibilità di sostituire il generatore di numeri casuali predefinito (RNG). In CryptoAPI è possibile fornire un RNG alternativo come parte di un provider di servizi di crittografia (CSP), ma non è possibile reindirizzare i CSP di Microsoft Base per usare un altro RNG. CNG consente di specificare in modo esplicito un determinato RNG da usare all'interno di determinate chiamate.
Thread safety
Tutte le funzioni che modificano la stessa area di memoria contemporaneamente (sezioni critiche) quando vengono chiamate da thread separati non sono thread-safe.
Modalità di funzionamento
CNG supporta cinque modalità di operazioni che possono essere usate con crittografie a blocchi simmetrici tramite le API di crittografia. Queste modalità e la relativa supportabilità sono elencate nella tabella seguente. La modalità di funzionamento può essere modificata impostando la proprietà BCRYPT_CHAINING_MODE per il provider di algoritmi usando la funzione BCryptSetProperty.
Modalità di funzionamento | BCRYPT_CHAINING_MODE valore | Algoritmi | Standard |
---|---|---|---|
BCE (Electronic Codebook) | BCRYPT_CHAIN_MODE_ECB | Crittografie a blocchi simmetrici | SP800-38A |
CBC (Cipher Block Chaining) | BCRYPT_CHAIN_MODE_CBC | Crittografie a blocchi simmetrici | SP800-38A |
TLS (Feedback crittografato) | BCRYPT_CHAIN_MODE_CFB | Crittografie a blocchi simmetrici | SP800-38A |
CCM (contatore con CBC) | BCRYPT_CHAIN_MODE_CCM | AES | SP800-38C |
GCM (galois/modalità contatore) | BCRYPT_CHAIN_MODE_GCM | AES | SP800-38D |
Nota
In Windows Vista sono definite solo le modalità di funzionamento DELLA BCE, CBC e OPERATION. GCM e CCM richiedono Windows Vista con Service Pack 1 (SP1) o Windows Server 2008.