2.6 KiB
2.6 KiB
Modelo de Segurança e Privacidade
O CyberCore Signer foi projetado seguindo as diretrizes rigorosas da ICP-Brasil e os princípios de Security by Design e Least Privilege.
1. Isolamento de Rede
- Loopback Estrito: O socket do servidor HTTP local vincula-se exclusivamente ao endereço IP
127.0.0.1. Nenhuma interface de rede externa (LAN ou WAN) escuta a porta de serviço21325. - Prevenção contra Exposição Acidental: Testes unitários e de arquitetura garantem que conexões fora de
127.0.0.1sejam bloqueadas imediatamente no nível de bind do socket.
2. Autenticação e Autorização de Aplicações
Nenhuma aplicação desconhecida tem autorização para obter certificados ou assinar documentos sem consentimento expresso:
- Handshake de Autorização (
POST /ccsp/v1/authorize):- A aplicação web identifica-se enviando seu
application_id(UUID estável) e seu nome amigável. - O CyberCore Signer suspende a requisição e abre uma janela modal nativa na tela principal do sistema operacional perguntando se o usuário autoriza aquele domínio web.
- A aplicação web identifica-se enviando seu
- Armazenamento Seguro das Autorizações:
- As aplicações autorizadas são gravadas em
~/.cybercore/authorized-apps.json. - O usuário pode visualizar e revogar a qualquer momento qualquer permissão através da aba Configurações na interface gráfica.
- As aplicações autorizadas são gravadas em
3. Proteção Contra Ataques de Replay
Cada solicitação de assinatura enviada pelo SDK deve incluir:
- Um
nonce(UUID criptograficamente aleatório); - Um campo
expires_at(outimestamp).
O componente NonceManager:
- Armazena os nonces recentes em memória protegida com expiração temporal (TTL);
- Rejeita com código estruturado
REPLAY_DETECTEDcaso o mesmo nonce seja submetido mais de uma vez; - Rejeita com código
REQUEST_EXPIREDrequisições cuja data/hora de validade já tenha sido ultrapassada.
4. Confirmação Visual Obrigatória e Proteção de PIN/Chaves
- Confirmação Manual do Usuário: Toda e qualquer assinatura exige intervenção física e visual do usuário. Não é possível assinar "silenciosamente" por chamadas de API em segundo plano.
- Inviolabilidade da Chave Privada: A chave privada nunca é exportada nem manipulada em forma de bytes puros. Todas as operações utilizam handles JCA/JCE ou comandos de hardware nativo.
- Proteção de PIN e Senhas:
- O PIN de smartcards e a senha de arquivos A1 nunca são transmitidos para a aplicação web e nunca aparecem em logs de auditoria.
- Em caso de remoção do hardware, o
SmartCardWatcherlimpa e zera os buffers de memória de PIN imediatamente.