Funzionalità CNG

CNG include le funzionalità seguenti.

Agilità crittografica

Una delle proposte di valore chiave di CNG è flessibilità crittografica, talvolta denominata agnosticismo crittografico. Conversione dell'implementazione di protocolli come secure Sockets Layer protocol (SSL) o transport layer security (TLS), CMS (S/MIME), IPsec, Kerberos e così via, in CNG, tuttavia, è stato necessario per rendere questa capacità utile. A livello di CNG, è stato necessario fornire sostituzione e individuabilità per tutti i tipi di algoritmo (simmetrici, asimmetrici, funzioni hash), generazione casuale di numeri 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 degli algoritmi e altre opzioni di flessibilità non esistenti in precedenza.

CNG è prima disponibile in Windows Vista ed è posizionato per sostituire gli usi esistenti di CryptoAPI nello stack di software Microsoft. Gli sviluppatori di terze parti troveranno molte nuove funzionalità in CNG, tra cui:

  • Nuovo sistema di configurazione della crittografia, che supporta una migliore agilità crittografica.
  • Astrazione con granularità fine per l'archiviazione delle chiavi (e la separazione dell'archiviazione dalle operazioni dell'algoritmo).
  • Isolamento dei processi per le operazioni con chiavi a lungo termine.
  • Generatori di numeri casuali sostituibili.
  • Sollievo dalle restrizioni di firma di esportazione.
  • Sicurezza del thread in tutto lo stack.
  • API crittografica in modalità kernel.

CNG include inoltre il supporto per tutti gli algoritmi B necessari, inclusa la crittografia a curva ellittica (ECC). Le applicazioni CryptoAPI esistenti continueranno a funzionare man mano che il CNG diventa disponibile.

Certificazione e conformità

CNG viene convalidato a Federal Information Processing Standards (FIPS) 140-2 ed è parte della destinazione della valutazione per la certificazione Criteri comuni windows. CNG è stato progettato per essere utilizzabile come componente in un sistema convalidato fiPS livello 2.

CNG è conforme ai requisiti comuni dei criteri archiviando e usando chiavi di lunga durata in un processo sicuro.

Supporto per Suite B

Una caratteristica importante di CNG è il supporto per gli algoritmi B suite. Nel febbraio del 2005, l'Agenzia nazionale per la sicurezza (NSA) del Stati Uniti ha annunciato un set coordinato di crittografia simmetrica, un accordo segreto asimmetrico (noto anche come scambio di chiavi), le funzioni di firma digitale e hash per il futuro uso degli Stati Uniti d'America denominato Suite B. La 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 sensibili-ma-unclassificate. A causa di questo, il supporto di Suite B è molto importante per i fornitori di software dell'applicazione e gli integratori di sistema, nonché per Microsoft.

Tutti gli algoritmi B suite sono noti pubblicamente. Sono stati sviluppati all'esterno dell'ambito della segretezza governativa storicamente associata allo sviluppo di algoritmi crittografici. In questo stesso intervallo di tempo, alcuni paesi e regioni europee hanno anche proposto gli stessi requisiti di suite B per proteggere le loro informazioni.

La crittografia B suite consiglia l'uso di Diffie-Hellman a curva ellittica (ECDH) in molti protocolli esistenti, ad esempio Internet Key Exchange (IKE, principalmente usato in IPsec), sicurezza del livello di trasporto (TLS) 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) degli algoritmi di hashing, ECDH e elliptic curve DSA (ECDSA) sulle curve prime standard NIST P-256, P-384 e P-521. Le curve binarie, le curve di Koblitz, le curve prime personalizzate e le curve ellittiche Menezes-Qu-Vanstone (ECMQV) non sono supportate dai provider di algoritmi Microsoft inclusi in Windows Vista.

Supporto legacy

CNG fornisce il 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 utente per supportare completamente le funzionalità di crittografia. Sia SSL/TLS che IPsec operano in modalità kernel oltre ai processi di avvio che verranno usati da 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 indica in modo esplicito 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_LEVELIRQL. Inoltre, alcune funzioni CNG in modalità kernel possono essere chiamabili in 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 generico basato su software e basato su software 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 provider Microsoft predefinito non supportato da Ksecdd.sys è DSA.

Windows Server 2008 e Windows Vista: CNG non supporta algoritmi e provider pluggable in modalità kernel. Gli unici algoritmi crittografici supportati disponibili in modalità kernel sono queste implementazioni fornite da Microsoft tramite le API CNG in modalità kernel.

Controllo

Per rispettare alcuni dei requisiti comuni relativi ai criteri oltre a fornire sicurezza completa, molte azioni che si verificano nel livello CNG vengono controllate nel provider di archiviazione della chiave 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 di chiavi e coppie chiave, inclusi gli errori di auto-test.
  • L'importazione e l'esportazione delle chiavi devono essere controllate.
  • Gli errori di distruzione delle chiavi devono essere controllati.
  • 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 delle chiavi segrete, se presenti, devono essere controllati, ad esempio la parità controlla le chiavi 3DES.
  • Gli errori nella crittografia, decrittografia, hashing, firma, verifica, scambio di chiavi e generazione di numeri casuali devono essere controllati.
  • I self-test crittografici devono essere controllati.

In generale, se una chiave non ha un nome, è una chiave effimerale. Una chiave temporaneo non persiste e Microsoft KSP non genera record di controllo per le chiavi temporaneo. Microsoft KSP genera record di controllo in modalità utente solo nel processo LSA. Nessun record di controllo viene generato dalla modalità kernel CNG. 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: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 provider di servizi di microsoft base per usare un altro RNG. Il 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 operazione

CNG supporta cinque modalità di operazioni che possono essere usate con crittografia a blocchi simmetrici tramite le API di crittografia. Queste modalità e la relativa supportabilità sono elencate nella tabella seguente. La modalità di operazione può essere modificata impostando la proprietà BCRYPT_CHAINING_MODE per il provider di algoritmi usando la funzione BCryptSetProperty .

Modalità di operazione BCRYPT_CHAINING_MODE valore Algoritmi Standard
BCE (Electronic Codebook) BCRYPT_CHAIN_MODE_ECB Crittografia a blocchi simmetrici SP800-38A
CBC (concatenamento blocchi di crittografia) BCRYPT_CHAIN_MODE_CBC Crittografia a blocchi simmetrici SP800-38A
TLS (Feedback sulla crittografia) 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à BCE, CBC e L'OPERAZIONE. GCM e CCM richiedono Windows Vista con Service Pack 1 (SP1) o Windows Server 2008.