Trocas manuais de chaves de sessão
Nota
O procedimento descrito nesta seção pressupõe que os usuários (ou clientes CryptoAPI) já possuem seu próprio conjunto de pares de chaves públicas/privadas e também obtiveram as chaves públicas umas das outras.
A ilustração a seguir mostra como usar esse procedimento para enviar uma mensagem criptografada.
Essa abordagem é vulnerável a pelo menos uma forma comum de ataque. Um eavesdropper pode adquirir cópias de uma ou mais mensagens criptografadas e as chaves criptografadas. Em seguida, em algum momento posterior, o interceptador pode enviar uma dessas mensagens para o receptor e o receptor não terá como saber que a mensagem não veio diretamente do remetente original. Esse risco pode ser reduzido com o carimbo de tempo de todas as mensagens ou usando números de série.
A maneira mais fácil de enviar mensagens criptografadas para outro usuário é enviar a mensagem criptografada com uma chave de sessão aleatória junto com a chave de sessão criptografada com o chave pública de troca de chaves do receptor.
A seguir estão as etapas para enviar uma chave de sessão criptografada.
Enviar uma chave de sessão criptografada
- Crie uma chave de sessão aleatória usando a funçãoCryptGenKey.
- Criptografe a mensagem usando a chave de sessão. Este procedimento é discutido no de Criptografia e Descriptografia de Dados do.
- Exporte a chave de sessão para umade BLOB de chavecom a função CryptExportKey, especificando que a chave seja criptografada com a chave pública de troca de chaves do usuário de destino.
- Envie a mensagem criptografada e o BLOB de chave criptografada para o usuário de destino.
- O usuário de destino importa o BLOB de chave para seu CSP usando a funçãoCryptImportKey. Isso descriptografará automaticamente a chave de sessão, desde que a chave pública de troca de chaves do usuário de destino tenha sido especificada na etapa 3.
- O usuário de destino pode descriptografar a mensagem usando a chave de sessão, seguindo o procedimento discutido no Data Encryption and Decryption.