CSP e processo di crittografia
le funzioni CryptoAPI usano provider di servizi di crittografia (CSP) per eseguire la crittografia e la decrittografia e per fornire archiviazione e sicurezza delle chiavi. Questi CSP sono moduli indipendenti. Idealmente, i CSP 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 diGDI di Windows. I CSP 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 per 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 di crittografia 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 provider di servizi di configurazione; 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 il CryptoAPI riconosca il provider di servizi di configurazione. CryptoAPI convalida periodicamente questa firma per assicurarsi che venga rilevata qualsiasi manomissione con il provider di servizi di configurazione.
Alcuni CSP 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 e dello stato della chiave centrale in un servizio separato da indirizzi o nell'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 provider di servizi di configurazione diverso. Le applicazioni ben scritte devono funzionare con un'ampia gamma di CSP.
Per informazioni dettagliate sui tipi di provider di crittografia e sui provider di servizi di configurazione predefiniti che possono essere usati con CryptoAPI, vedere tipi di provider di crittografia e provider di servizi di crittografia Microsoft.