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 ./mvnw incluí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

  1. 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.
  2. 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.
  3. Confirmação Explícita: Toda operação de assinatura exige consentimento e autorização visual do usuário antes da aplicação da chave.
  4. 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:


📄 Licença

Propriedade de CyberCore Systems. Todos os direitos reservados.

S
Description
No description provided
Readme
4.5 MiB
Languages
Java 86.4%
HTML 5.4%
JavaScript 3.6%
CSS 3.2%
Shell 1.1%
Other 0.3%