Repositórios de chaves - Amplia
As chaves das suas Autoridades Certificadoras (ACs) podem ficar em vários locais, chamados repositórios de chaves (key stores). A escolha de onde guardar as chaves das ACs é uma das decisões mais importantes no planejamento de uma AC ou de uma Infraestrutura de Chaves Públicas (ICP).
Alguns dos locais em que você pode guardar chaves são:
- O banco de dados
- Um Hardware Security Module (HSM)
- Um token criptográfico USB
- Um Azure Key Vault
Cada opção tem vantagens e desvantagens.
Chaves guardadas no banco de dados não têm custo e exigem o mínimo de configuração, mas é difícil controlar o acesso a elas. Embora as chaves sejam armazenadas com criptografia de 256 bits, pode ser difícil restringir o acesso à "chave mestra" usada para criptografá-las.
Do ponto de vista de segurança e confiabilidade, talvez a melhor opção seja guardar as chaves em um HSM. Esses dispositivos permitem gerar chaves dentro de um ambiente protegido criptograficamente, de modo que elas nunca saiam desse ambiente, mas ainda assim possam ter backup (normalmente com dois HSMs). A desvantagem é o custo, que costuma ir de alguns a vários milhares de dólares por unidade, dependendo do fabricante e dos recursos do dispositivo escolhido. Manter HSMs também pode ser caro, já que em geral exige pessoal especializado.
Um token criptográfico USB é bem mais barato, custa cerca de 10 dólares por unidade e também gera chaves dentro de um ambiente protegido criptograficamente, do qual elas nunca saem. No entanto, as chaves geradas dentro de tokens criptográficos normalmente não podem ter backup, o que deixa a AC vulnerável à perda das chaves, um evento grave para uma AC.
Uma opção que reúne o melhor dos repositórios de chaves em HSM com custo relativamente baixo é o Azure Key Vault, que pode ser visto como um HSM em nuvem. As chaves ficam em HSMs validados FIPS 140-2 nível 2, por um custo relativamente baixo, de cerca de 5 dólares por mês por chave. Esse serviço da Microsoft viabilizou o uso de HSMs em projetos que, de outra forma, não teriam orçamento para isso.
A instância do Amplia em nuvem da Lacuna Software (oferta SaaS) guarda todas as chaves de AC no Azure Key Vault, e recomendamos fortemente essa opção tanto para instâncias instaladas em nuvem quanto em servidores locais.
Tipos de repositório de chaves
Independentemente de onde você decidir guardar as chaves, os repositórios de chaves normalmente oferecem suporte a um ou mais protocolos de comunicação. O Amplia se comunica com os repositórios de chaves por esses protocolos, que definem os tipos de repositório de chaves compatíveis com o Amplia.
Os tipos de repositório de chaves compatíveis são:
- Banco de dados
- PKCS #11
- Windows CryptoAPI (CAPI)
- Windows Cryptography API - Next Generation (CNG)
- Azure Key Vault
- HSM Dinamo
- HSM Kryptus
Configuração dos repositórios de chaves
Na seção KeyStores do arquivo de configuração, cada subseção tem o nome de um repositório de chaves e contém a configuração dele. Por exemplo:
Exemplo (arquivo de configuração .ini ou .conf):
[KeyStores:Store1]
Type=...
Setting1=...
Setting2=...
[KeyStores:Store2]
Type=...
Setting1=...
Setting2=...
Setting3=...
Exemplo (variáveis de ambiente):
KeyStores__Store1__Type=...
KeyStores__Store1__Setting1=...
KeyStores__Store1__Setting2=...
KeyStores__Store2__Type=...
KeyStores__Store2__Setting1=...
KeyStores__Store2__Setting2=...
KeyStores__Store2__Setting3=...
Exemplo (arquivo de configuração .json):
...
"KeyStores": {
"Store1": {
"Type": "...",
"Setting1": "...",
"Setting2": "..."
},
"Store2": {
"Type": "...",
"Setting1": "...",
"Setting2": "...",
"Setting3": "..."
},
}
...
A configuração Type de cada repositório de chaves define o tipo do repositório, e as demais configurações dependem do provider escolhido.
Veja o artigo de cada tipo de repositório de chaves para as instruções de configuração (links acima).