Como armazeno o par de chaves RSA no Windows?

Como armazeno o par de chaves RSA no Windows?

Estou tentando escrever um programa simples de criptografia-descriptografia usando Openssl-RSA. Quando um dado é criptografado, um par de chaves é gerado. Se eu quiser descriptografar os dados, preciso do par de chaves exato que foi gerado durante a criptografia.

Então, onde e como armazeno esse par de chaves para poder descriptografar o conteúdo criptografado sempre que possível?

Estou usando chave pública para criptografia e chave privada para descriptografia.

Responder1

Tecnicamente, você pode armazenar o par de chaves onde quiser, embora existam algumas maneiras comuns de fazer isso.

Se os dados forem particularmente sensíveis e não forem necessários regularmente/constantemente, o método mais seguro de armazenar sua chave privada é em uma unidade flash ou impressa em um pedaço de papel em um cofre ou cofre de banco. (Observe que você pode armazenar a chave pública em qualquer lugar que desejar - afinal, ela é uma informação "pública".

Se você precisa que os dados estejam prontamente acessíveis, geralmente não é prático armazenar a chave privada off-line em um cofre devido ao incômodo de recuperá-la sempre. Um local comum frequentemente usado para armazenamento de chaves é uma pasta nomeada .sshdentro de seu diretório inicial. (Este é o padrão no OpenSSL no Linux e também é frequentemente usado em outros sistemas.) A prática comum é armazenar a chave como dois arquivos com nomes que os descrevem da seguinte maneira: purpose_typepara a chave privada e purpose_type.pubpara a chave pública . Por exemplo, se você usar a linha de comando OpenSSL para criar uma chave RSA que identifiquevocê, ele será armazenado por padrão nos arquivos id_rsae id_rsa.pubno .sshdiretório. No seu caso, você poderia nomear os arquivos principais como mydatastorage_rsae mydatastorage_rsa.pub.

IMPORTANTE: se você armazenar uma chave privada dessa maneira, é altamente recomendável protegê-la com uma senha longa. Isso evita que qualquer pessoa que tenha acesso aos seus arquivos possa usar sua chave privada. Talvez você tenha sido solicitado a fornecer uma senha de chave quando criou originalmente o par de chaves; caso contrário, você pode adicionar uma senha à chave privada usando as ferramentas de linha de comando OpenSSL.

Se você estiver realizando muitos trabalhos de criptografia confidenciais, poderá comprar um armazenamento de chaves de hardware, chamado "Módulo de segurança de hardware", abreviado como "HSM", projetado para armazenamento seguro de chaves privadas. A menos que você esteja realmente trabalhando no setor de segurança/criptografia, isso é quase definitivamente um exagero. Existem também outras soluções de hardware, incluindo “Smart Cards” e “USB Crypto Tokens”, que são mais baratas que um HSM completo, mas ainda exigem algum investimento em hardware que provavelmente é maior do que o necessário.


Apesar da recomendação de proteger uma chave privada com uma senha, você poderá ter problemas se precisar fazer essa descriptografia dentro de um serviço, como um servidor web. Nesse caso, você tem três opções:

  1. Forneça a senha sempre que o aplicativo do servidor for inicializado.
  2. Forneça a senha em um arquivo de configuração. (Suportado apenas por alguns servidores)
  3. Remova a senha (ou não defina uma).

Embora o primeiro seja mais seguro, ele só pode ser usado se você iniciar o serviço manualmente sempre. Se você precisar fazer qualquer uma das outras opções, certifique-se de proteger adequadamente o arquivo de configuração (opção 2) ou a chave privada (opção 3) para impedir o acesso a ele.

informação relacionada