GeCert
O GeCert é o gerenciador de chaves e certificados da Lacuna Software para organizações. Ele guarda as chaves privadas dos certificados em repositórios de chaves (um HSM Kryptus, o Azure Key Vault, um dispositivo PKCS #11 ou o próprio banco de dados), define quais usuários podem usar cada certificado e disponibiliza esses certificados no Windows de cada usuário por meio do aplicativo Gecert Connect. Com isso, qualquer aplicação Windows assina, decripta ou autentica com o certificado da organização, e a chave privada nunca sai do repositório. Cada uso da chave fica registrado.
Você pode usar uma instância do GeCert hospedada pela Lacuna ou ter uma instância na sua própria infraestrutura (on-premises). A aplicação web e o Gecert Connect estão disponíveis em português, inglês e espanhol.
Componentes
- Servidor GeCert: a aplicação web, com a área de cada organização e a área de administração (Sys Admin), e a API REST que a aplicação web e o Gecert Connect usam. Os usuários entram com uma conta do GrantID (OpenID Connect).
- Gecert Connect: o aplicativo que fica na bandeja do Windows do usuário. Ele instala no repositório de certificados do Windows os certificados a que o usuário tem acesso e atende aos pedidos de assinatura e decriptação, encaminhando-os ao servidor.
- Lacuna Key Storage Provider (KSP): um provedor de armazenamento de chaves da CNG (Cryptography API: Next Generation) do Windows, instalado junto com o Gecert Connect. É por ele que o Windows e as aplicações enxergam a chave de cada certificado; ele repassa cada operação ao Gecert Connect por um named pipe.
- Repositórios de chaves: onde as chaves ficam de fato. Veja a tabela abaixo.
Conceitos
- Organização: cada organização tem as próprias chaves, certificados, usuários e aplicações. O administrador da instância, na área Sys Admin, cria as organizações e define a quais repositórios de chaves cada uma tem acesso. Um usuário pode pertencer a várias organizações.
- Chave: uma referência a um par de chaves RSA guardado em um repositório. O GeCert guarda apenas os parâmetros que identificam a chave no repositório (por exemplo, os identificadores KMIP no HSM Kryptus) e um CSR assinado com ela. Uma chave nasce de três formas: gerada pelo GeCert no repositório (Gerar Nova Chave), importada de um arquivo PKCS #12 ao adicionar um certificado, ou registrada quando já existe no repositório (Registrar chave existente).
- Certificado: um certificado X.509 ligado a uma chave. Para incluí-lo, envie um arquivo PKCS #12 (
.pfx) com a senha, e o GeCert importa a chave para o repositório escolhido (Adicionar certificado); ou envie só o certificado (.cer, sem senha) para uma chave que já está no GeCert, desde que a chave pública corresponda (Registrar certificado). Um mesmo certificado não pode ser incluído duas vezes na mesma organização. - Acesso ao certificado: a autorização para um usuário usar um certificado. Só quem tem acesso vê o certificado no Gecert Connect e pode assinar com ele. O usuário precisa fazer parte da organização, e não pode ter acesso ao mesmo certificado (mesmo thumbprint) por duas organizações. Os acessos de um certificado podem ser copiados para outro, por exemplo quando o certificado é renovado.
- Acesso ao repositório de chaves: a liberação de um repositório para uma organização, feita pelo Sys Admin. Só os repositórios liberados
aparecem ao gerar, registrar ou importar chaves. O repositório no banco de dados, chamado
DatabaseDefault, existe em toda instância. - Partição: nos repositórios que suportam partições, cada organização recebe uma partição própria, criada pelo GeCert na primeira vez que ela usa o repositório. No HSM Kryptus, a partição é um usuário do HSM com um PIN gerado pelo GeCert e guardado como secret data no próprio HSM; no banco de dados, é uma chave de criptografia própria, protegida por um PIN gerado pelo GeCert. O Azure Key Vault e os dispositivos PKCS #11 não têm partições: as chaves de todas as organizações ficam na raiz do repositório.
- Usos de chaves: o registro de cada operação feita com uma chave pelo Gecert Connect: a data, o usuário, a operação (assinatura, decriptação, encriptação ou verificação de assinatura), o algoritmo, o hash e o valor produzido.
- Eventos e relatórios: toda criação, registro, atualização e exclusão de chaves e certificados, e toda concessão ou remoção de acesso, gera um evento. A organização pode gerar um relatório de expiração dos certificados e um relatório dos eventos de um certificado, em XLSX, CSV ou PDF.
Como uma assinatura acontece
- Antes de tudo, o usuário entra no Gecert Connect com a conta do GrantID. A cada 60 segundos, o aplicativo consulta os certificados a que o
usuário tem acesso (
GET /api/certificates/my) e instala cada um deles no repositório de certificados pessoal do usuário no Windows, ligado a uma chave do Lacuna KSP cujo nome é o ID da chave no GeCert. Certificados cujo acesso foi removido são desinstalados. - Uma aplicação Windows (Adobe Acrobat, Office, um navegador, a sua aplicação) escolhe o certificado no repositório do Windows e pede à CNG que assine um hash com a chave dele.
- O Lacuna KSP recebe o pedido e o envia ao Gecert Connect pelo named pipe
gecert-connect-pipe. - O Gecert Connect chama
POST /api/keys/{id}/signatureno servidor, com o token de acesso do usuário, informando o algoritmo (RS256ouRS512) e o hash em Base64. - O servidor confere que o usuário tem acesso ao certificado e faz parte da organização, conecta-se à partição (ou à raiz) do repositório e assina o hash lá dentro.
- A assinatura volta pelo mesmo caminho até a aplicação, e o servidor registra o uso na lista Usos de chaves da organização.
A decriptação segue o mesmo caminho (POST /api/keys/{id}/decryption, com o padding RSA1_5). A encriptação e a verificação de
assinatura também passam pelo servidor, mas usam só a chave pública do certificado. Veja a API.
Papéis e permissões
Os papéis são os da plataforma de aplicações da Lacuna: dois por organização e dois na área Sys Admin.
| Papel | Onde | O que pode fazer |
|---|---|---|
| Admin | Organização | Ver e gerenciar chaves, certificados e acessos a certificados; gerenciar os usuários e as aplicações da organização |
| Basic | Organização | Ver chaves, certificados e acessos a certificados |
| Owner | Sys Admin | Ver as chaves, os certificados e os acessos de todas as organizações; gerenciar acessos a certificados; conceder e remover o acesso das organizações aos repositórios de chaves; gerenciar usuários |
| Contributor | Sys Admin | Ver as chaves, os certificados, os acessos a certificados e os acessos aos repositórios de todas as organizações |
Usar uma chave (assinar ou decriptar pelo Gecert Connect) não depende do papel: exige que o usuário tenha um acesso ao certificado concedido e faça parte da organização dona do certificado. Um Admin que não tem acesso ao certificado não consegue assinar com ele.
Repositórios de chaves
O que cada tipo de repositório permite:
| Repositório | Type | Gerar chaves | Importar PKCS #12 | Registrar chave existente | Partição por organização | Exclusão definitiva |
|---|---|---|---|---|---|---|
Banco de dados (DatabaseDefault) | Database | Sim | Sim | Não | Sim | Sempre |
| HSM Kryptus kNET | Kryptus | Sim | Sim | Sim | Sim | Não |
| Azure Key Vault | AzureKeyVault | Sim (2048 ou 4096 bits) | Sim | Sim | Não | Se configurada |
| Dispositivo PKCS #11 (HSM ou token) | Pkcs11 | Sim | Sim | Sim | Não | Se configurada |
Por padrão, uma chave pode ter 1024, 2048 ou 4096 bits. No Azure Key Vault, o nome da chave só pode ter letras, números e hífens. Quando a
exclusão definitiva (HardDelete) não está configurada ou não é suportada, excluir uma chave no GeCert só a marca como excluída: ela continua
no repositório.
A configuração de cada repositório está em Configuração de repositórios de chaves.
A aplicação web
Na Área da Organização, o menu tem:
- Home: resumo da organização, com atalhos para Gerar chave e Adicionar certificado.
- Chaves: a lista de chaves, Gerar Nova Chave e Registrar chave existente. Em cada chave: Detalhes da Chave (tipo, tamanho e se ela ainda está no repositório), Editar Chave (o nome), CSR da Chave (exibir a CSR ou Emitir nova CSR, escolhendo o algoritmo de hash e o nome do titular), Parâmetros da Chave (os parâmetros no repositório, quando o repositório permite registro de chaves) e Histórico da Chave.
- Certificados: a lista de certificados, Adicionar certificado e Registrar certificado. Em cada certificado: os detalhes, os usuários autorizados (Conceder acesso ao certificado, remover um acesso ou todos, Copiar autorizações para outro certificado), os Usos do certificado, os Eventos do certificado e os relatórios (Gerar relatório de certificados, de expiração, e Gerar relatório de certificado, com os eventos de um certificado).
- Usos de chaves: todas as operações feitas com as chaves da organização.
- Usuários, Aplicações e Eventos: os usuários e os papéis deles, as aplicações com chave de API e o histórico da organização. Em cada usuário, os Certificados autorizados.
Na área Sys Admin, além das organizações, dos usuários, das aplicações e dos eventos de toda a instância, o menu tem Armazenamentos de Chaves: a lista dos repositórios configurados (nome, tipo, se é o padrão, se aceita inserção e registro de chaves e se faz exclusão definitiva) e os detalhes de cada um. Nos detalhes de uma organização, o Sys Admin concede e remove o acesso dela aos repositórios (Conceder acesso ao meio de armazenamento).