CyberCore Signer
Agente Desktop de Assinatura Digital e Autenticação Criptográfica (A1 / A3 / PKCS#11) para Windows e Linux.
O CyberCore Signer é uma solução desktop em Java 21 LTS com JavaFX que permite que aplicações web autorizadas solicitem assinaturas digitais, autenticação de sessão e carimbos do tempo utilizando certificados digitais ICP-Brasil (A1 em arquivo e A3 em tokens/smartcards físicos) instalados ou conectados na estação de trabalho do usuário.
A comunicação local entre a página web e o agente utiliza o protocolo CCSP (CyberCore Signing Protocol) via HTTP/WebSocket localhost autenticado e seguro.
🏛 Arquitetura do Projeto
O projeto é estruturado em módulos Maven:
- modules/cybercore-core: Núcleo de regras criptográficas (JCA/JCE, SunPKCS11, X.509, PAdES, XMLDSig, carimbo de tempo TSA, LTV e validação de cadeias). Não possui dependência de interface gráfica.
- modules/cybercore-ui: Interface gráfica com o usuário construída em JavaFX (Dashboard, Gerenciador de Certificados, Diagnóstico Criptográfico, Diálogo de Confirmação de Assinatura, PIN dialog e System Tray).
- modules/cybercore-app: Ponto de entrada da aplicação (
CyberCoreApp), orquestrador dos serviços de ciclo de vida e servidor CCSP local. - sdk/: SDK JavaScript oficial (
@cybercore/signer-sdk) para integração de aplicações web com o agente desktop. - docs/: Documentação técnica detalhada de arquitetura, protocolo, segurança e casos de uso.
🚀 Requisitos
- Java Development Kit (JDK): Versão 21+ LTS (OpenJDK, Temurin, Corretto, etc.).
- Maven: 3.9+ (ou utilizar o wrapper
./mvnwincluído no projeto). - Sistema Operacional Alvo: Windows 10/11 ou Linux (x86_64).
🛠 Compilação e Empacotamento
1. Compilação do JAR Executável
Para compilar e gerar o JAR consolidado (com todas as dependências sombreadas e assets):
./build-jar.sh
Ou diretamente via Maven:
./mvnw clean package -DskipTests
O artefato consolidado será gerado em:
modules/cybercore-app/target/cybercore-signer.jar
2. Execução Local
Para iniciar o agente em ambiente de desenvolvimento:
# No Linux / macOS:
./run.sh
# No Windows:
run.bat
3. Empacotamento com Runtime Nativo (jpackage)
Para criar a distribuição com Java Runtime embutido (sem exigir JDK pré-instalado pelo usuário final):
./scripts/package-jpackage.sh
🔒 Princípios de Segurança e Privacidade
- Chave Privada Preservada: A chave privada e os segredos (PIN de token A3 e senha de certificado A1) nunca saem da máquina do usuário nem trafegam pela rede.
- Assinatura por Digest: Por padrão, a aplicação web calcula o hash/digest (ex: SHA-256) do documento e o CyberCore assina localmente apenas o digest, minimizando o tráfego de dados sensíveis.
- Confirmação Explícita: Toda operação de assinatura exige consentimento e autorização visual do usuário antes da aplicação da chave.
- Isolamento de Origem e CCSP: O agente atende apenas origens web autorizadas, protegendo contra abusos via CSRF ou requisições locais não autenticadas.
📚 Documentação Técnica
Consulte a pasta docs/ para especificações completas:
- Protocolo CCSP (CyberCore Signing Protocol)
- Arquitetura e Fluxo do Sistema
- Certificados A1 e A3 (PKCS#11 / MSCAPI)
- Assinatura de Documentos PDF (PAdES / LTV / TSA)
- Assinatura de Documentos XML (XMLDSig)
- Autenticação e Sessão Criptográfica
- Diagnóstico e Resolução de Problemas
- Segurança e Tratamento de Erros
- SDK Web JavaScript
- Guia de Instalação
📄 Licença
Propriedade de CyberCore Systems. Todos os direitos reservados.