CSPs e o processo de criptografia

As funções cryptoAPI usam CSPs ( provedores de serviços criptográficos ) para executar criptografia e descriptografia e para fornecer armazenamento e segurança de chaves. Esses CSPs são módulos independentes. Idealmente, os CSPs são gravados para serem independentes de um aplicativo específico, para que qualquer aplicativo seja executado com uma variedade de CSPs. Na realidade, no entanto, alguns aplicativos têm requisitos específicos que exigem um CSP personalizado. Isso se compara ao modelo de GDI Windows. Os CSPs são análogos aos drivers de dispositivos gráficos.

A qualidade da proteção para chaves dentro do sistema é um parâmetro de design do CSP e não do sistema como um todo. Isso permite que um aplicativo seja executado em uma variedade de contextos de segurança sem modificação.

Os aplicativos de acesso aos internos criptográficos são cuidadosamente restritos. Isso facilita o desenvolvimento seguro e portátil de aplicativos.

As três regras de design a seguir se aplicam:

  • Os aplicativos não podem acessar diretamente o material de chave. Como todo o material de chave é gerado dentro do CSP e usado pelo aplicativo por meio de identificadores opacos, não há risco de um aplicativo ou suas DLLs associadas divulgarem material de chave ou escolherem material de chave de fontes aleatórias ruins.
  • Os aplicativos não podem especificar os detalhes das operações criptográficas. A interface CSP permite que um aplicativo escolha um algoritmo de criptografia ou assinatura, mas a implementação de cada operação criptográfica é feita pelo CSP.
  • Os aplicativos não lidam com credenciais de usuário ou outros dados de autenticação de usuário. A autenticação do usuário é feita pelo CSP; portanto, os CSPs futuros com recursos avançados de autenticação, como entradas biométricas, funcionarão sem a necessidade de alterar o modelo de autenticação do aplicativo.

No mínimo, um CSP consiste em uma DLL (biblioteca de vínculo dinâmico) e um arquivo de assinatura. O arquivo de assinatura é necessário para garantir que o CryptoAPI reconheça o CSP. CryptoAPI valida essa assinatura periodicamente para garantir que qualquer violação com o CSP seja detectada.

Alguns CSPs podem implementar uma fração de sua funcionalidade em um serviço separado por endereço chamado por meio do RPC local ou em hardware chamado por meio de um driver de dispositivo do sistema. Isolar operações criptográficas globais de estado-chave e central em um serviço separado por endereço ou em hardware mantém chaves e operações seguras contra adulteração em um espaço de dados do aplicativo.

É imprudente que os aplicativos tirem proveito de atributos específicos a um CSP específico. Por exemplo, o Provedor Criptográfico da Base da Microsoft (fornecido com CryptoAPI) dá suporte a chaves de sessão de 40 bits e chaves públicas de 512 bits. Os aplicativos que manipulam essas chaves devem evitar suposições sobre a quantidade de memória necessária para armazenar essas chaves porque o aplicativo provavelmente falhará se um CSP diferente for usado. Aplicativos bem escritos devem funcionar com uma variedade de CSPs.

Para obter detalhes sobre tipos de provedor criptográfico e CSPs predefinidos que podem ser usados com CryptoAPI, consulte Tipos de Provedor criptográfico e Provedores de Serviços Criptográficos da Microsoft.