CSP e processo di crittografia

Le funzioni CryptoAPI usano provider di servizi di crittografia (CSP) per eseguire la crittografia e la decrittografia e fornire l'archiviazione e la sicurezza delle chiavi. Questi provider di servizi di configurazione sono moduli indipendenti. Idealmente, i provider di servizi di configurazione vengono scritti in modo che siano indipendenti da una determinata applicazione, in modo che qualsiasi applicazione venga eseguita con un'ampia gamma di provider di servizi di configurazione. In realtà, tuttavia, alcune applicazioni hanno requisiti specifici che richiedono un provider di servizi di configurazione personalizzato. Viene confrontato con il modello GDI Windows. I provider di servizi di configurazione sono analoghi ai driver dei dispositivi grafici.

La qualità della protezione per le chiavi all'interno del sistema è un parametro di progettazione del CSP e non del sistema nel suo complesso. In questo modo un'applicazione può essere eseguita in un'ampia gamma di contesti di sicurezza senza modifiche.

Le applicazioni di accesso devono accedere agli elementi interni crittografici con attenzione. Ciò facilita lo sviluppo di applicazioni sicure e portabili.

Si applicano le tre regole di progettazione seguenti:

  • Le applicazioni non possono accedere direttamente al materiale di keying. Poiché tutto il materiale di keying viene generato all'interno del CSP e usato dall'applicazione tramite handle opachi, non esiste alcun rischio per un'applicazione o le DLL associate di divulgare materiale di keying o scegliere materiale di keying da origini casuali scarse.
  • Le applicazioni non possono specificare i dettagli delle operazioni di crittografia. L'interfaccia CSP consente a un'applicazione di scegliere un algoritmo di crittografia o firma, ma l'implementazione di ogni operazione crittografica viene eseguita dal provider di servizi di configurazione.
  • Le applicazioni non gestiscono le credenziali utente o altri dati di autenticazione utente. L'autenticazione utente viene eseguita dal CSP; pertanto, i provider di servizi di configurazione futuri con funzionalità di autenticazione avanzate, ad esempio gli input biometrici, funzioneranno senza dover modificare il modello di autenticazione dell'applicazione.

Come minimo, un provider di servizi di configurazione è costituito da una libreria a collegamento dinamico (DLL) e da un file di firma. Il file di firma è necessario per assicurarsi che CryptoAPI riconosca il CSP. CryptoAPI convalida periodicamente questa firma per assicurarsi che venga rilevata qualsiasi manomissione con il provider di servizi di configurazione.

Alcuni provider di servizi di configurazione possono implementare una frazione delle relative funzionalità in un servizio separato da indirizzi chiamato tramite RPC locale o hardware chiamato tramite un driver di dispositivo di sistema. Isolando le operazioni di crittografia globali con stato chiave e centrale in un servizio separato da indirizzi o in hardware, le chiavi e le operazioni non vengono manomissioni all'interno di uno spazio dati dell'applicazione.

Non è opportuno che le applicazioni sfruttano gli attributi specifici di un provider di servizi di configurazione specifico. Ad esempio, microsoft Base Cryptographic Provider (fornito con CryptoAPI) supporta chiavi di sessione a 40 bit e chiavi pubbliche a 512 bit. Le applicazioni che modificano queste chiavi devono evitare presupposti sulla quantità di memoria necessaria per archiviare queste chiavi perché è probabile che l'applicazione abbia esito negativo se viene usato un CSP diverso. Le applicazioni ben scritte devono funzionare con un'ampia gamma di provider di servizi di configurazione.

Per informazioni dettagliate sui tipi di provider di crittografia e sui provider di servizi di crittografia predefiniti che possono essere usati con CryptoAPI, vedere Tipi di provider di crittografia e provider di servizi di crittografia Microsoft.