Relatório Técnico

Segurança e Arquitetura — Assinador Projudi-PR

Versão
1.0
Data
24 de fevereiro de 2026
Autor
Alexandre Brotto
Plataforma
macOS 13.0+
Linguagem
Swift 5.9 (100% nativo)
Distribuição
Mac App Store

1. Sumário Executivo

O Assinador Projudi-PR é uma aplicação nativa para macOS que substitui o atual AssinadorTJPR baseado em Java, mantendo total compatibilidade com o protocolo de assinatura digital do sistema Projudi do Tribunal de Justiça do Estado do Paraná (TJPR).

A solução foi desenvolvida para resolver os significativos problemas de usabilidade e segurança que os usuários de macOS enfrentam ao utilizar o assinador atual, que depende do Java 8 — uma tecnologia descontinuada e sem suporte de segurança desde março de 2019.

O aplicativo realiza exatamente as mesmas operações criptográficas do assinador oficial, porém em um ambiente significativamente mais seguro, moderno e transparente.

2. Problema Atual

2.1. Dependência do Java 8

O AssinadorTJPR atual requer o Java Runtime Environment 8 (JRE 8), cuja última atualização pública de segurança foi disponibilizada em março de 2019. A Oracle encerrou o suporte público ao Java 8 nessa data, o que significa que vulnerabilidades descobertas desde então não são corrigidas.

2.2. Procedimento atual no macOS

  1. Instalar o Java 8 (versão sem suporte)
  2. Baixar o arquivo .jnlp do Projudi
  3. Desabilitar manualmente o Gatekeeper via terminal: xattr -d com.apple.quarantine ~/Downloads/AssinadorTJPR.jnlp
  4. Clicar com botão direito e selecionar "Abrir" para contornar avisos
  5. Conceder permissões de acessibilidade ao Java
  6. Repetir a cada sessão de assinatura

Risco de Segurança

Este procedimento exige que o usuário desative proteções de segurança do sistema operacional, representando risco significativo para máquinas que processam dados sensíveis do Poder Judiciário.

3. Solução Proposta

3.1. Visão geral

Aplicação 100% nativa para macOS, escrita em Swift, que:

  1. Monitora automaticamente um diretório configurável (padrão: ~/Downloads)
  2. Detecta arquivos .jnlp baixados do Projudi
  3. Extrai os hashes dos documentos e os parâmetros de sessão
  4. Assina digitalmente cada hash com o certificado do usuário (A1/A3)
  5. Envia as assinaturas de volta ao Projudi via HTTPS
  6. Notifica o usuário sobre o resultado
Todo o processo é automático — o usuário clica "Assinar" no navegador e o documento é assinado sem nenhuma intervenção adicional.

3.2. Protocolo de assinatura

ComponenteEspecificação
FormatoCMS/PKCS#7 — assinatura detached
Algoritmo de hashSHA-1
Algoritmo de assinaturaRSA com PKCS#1 v1.5
Atributos assinadoscontentType, signingTime, messageDigest
TransporteHTTPS POST multipart/form-data
AutenticaçãoCookies de sessão extraídos do JNLP

Validação em produção

Compatibilidade verificada em ambiente de produção — documentos assinados aceitos pelo Projudi sem rejeição.

4. Arquitetura de Segurança

4.1. App Sandbox da Apple

CapacidadeStatusDescrição
Arquivos selecionados pelo usuárioSimApenas arquivos explicitamente selecionados
Acesso à rede (cliente)SimApenas conexões de saída (servidor Projudi)
Bookmarks de diretórioSimPermite monitorar a pasta Downloads
Arquivos do sistemaNãoBloqueado pelo sandbox
Outros aplicativosNãoBloqueado pelo sandbox
Processos externosNãoBloqueado pelo sandbox
Keychain de outros appsNãoBloqueado pelo sandbox
Escuta de rede (servidor)NãoBloqueado pelo sandbox
Captura de tela/tecladoNãoBloqueado pelo sandbox

4.2. Fluxo de dados criptográficos

┌──────────────────────────────────────────────────────────┐ macOS App Sandbox [Arquivo .jnlp] ──▶ [Parser JNLP] ──▶ [Hashes dos (XML → JSON) documentos] [Certificado .p12] ──▶ [Security.framework] (App Support) SecKeyCreateSignature() SHA1withRSA [Senha] (macOS Keychain) [Assinatura CMS/PKCS#7] (DER encoded) [HTTPS POST] projudi.tjpr.jus.br └──────────────────────────────────────────────────────────┘

4.3. Armazenamento do certificado

ComponenteLocalProteção
Arquivo .p12~/Library/Application Support/ (sandboxed)App Sandbox — inacessível por outras aplicações
Senha do certificadomacOS KeychainAES-256-GCM via Secure Enclave
Chave privada (em uso)Memória RAMNunca gravada em disco
A chave privada nunca é transmitida pela rede. A assinatura é realizada integralmente no dispositivo do usuário.

5. Análise Comparativa de Segurança

CritérioAssinadorTJPR (Java 8)Assinador Projudi-PR (Swift)
RuntimeSem patches desde mar/2019Atualizado com o macOS
IsolamentoNenhum — permissões totaisApp Sandbox da Apple
Assinatura de códigoJAR não assinado pela AppleAssinado + notarizado (App Store)
GatekeeperPrecisa desabilitarTotalmente compatível
Acesso a arquivosIrrestritoApenas selecionados pelo usuário
Acesso à redeIrrestritoApenas saída (HTTPS)
AtualizaçõesManualAutomática via App Store
Revisão de códigoNenhumaRevisão pela Apple
Superfície de ataque~250MB (JRE)~2MB (binário)
CVEs conhecidas400+ desde 2019Zero

5.2. Avaliação de risco

RiscoJava 8Swift nativo
Execução remota de códigoALTOMÍNIMO
Man-in-the-middleMÉDIOBAIXO
Roubo de certificadoALTOBAIXO
Escalação de privilégiosALTOMÍNIMO
Phishing via app falsoALTOBAIXO

6. Alerta de Segurança: Protocolo SHA-1

O protocolo do Projudi emprega SHA-1, considerado criptograficamente inseguro desde 2017:

2005 Primeiros ataques teóricos contra SHA-1
2015 NIST recomenda descontinuação do SHA-1
2017 Google demonstra colisão prática (SHAttered) — US$ 110.000
2019 Ataque chosen-prefix collision — US$ 45.000
2020 Custo de colisão: US$ 11.000
2022 Navegadores e CAs abandonaram SHA-1
2025 NIST formaliza desaprovação total

Recomendação de Migração

Recomendamos a migração de SHA-1 para SHA-256, em conformidade com NIST SP 800-131A Rev. 2, ICP-Brasil DOC-ICP-01.01 v5.2, e práticas internacionais de segurança para sistemas judiciais.

7. Conformidade

Norma / PadrãoStatus
ICP-Brasil — Padrão CMSCompatível
Apple App Store GuidelinesEm conformidade
LGPD (Lei 13.709/2018)Não coleta dados além do necessário
App SandboxTotalmente implementado
App Transport SecurityAtivo — HTTPS obrigatório

8. Especificações Técnicas

ComponenteTecnologia
LinguagemSwift 5.9
UISwiftUI
SegurançaApple Security.framework
ASN.1/DERImplementação nativa + SwiftASN1
FormatoCMS/PKCS#7 (RFC 5652) — detached
AlgoritmoSHA1withRSA (PKCS#1 v1.5)
TransporteHTTPS POST multipart/form-data
MonitoramentoDispatchSource (GCD)
ArmazenamentomacOS Keychain + App Sandbox
CompatibilidademacOS 13.0 Ventura+
ArquiteturasApple Silicon + Intel (Universal)

9. Conclusão

O Assinador Projudi-PR não compromete a segurança da assinatura digital. Pelo contrário, eleva significativamente o nível de segurança ao:

  1. Eliminar dependência de software sem suporte (Java 8)
  2. Eliminar a necessidade de desabilitar proteções do SO
  3. Isolar execução em App Sandbox
  4. Garantir atualizações automáticas e revisão pela Apple
  5. Reduzir superfície de ataque de ~250MB para ~2MB
  6. Manter total compatibilidade com o protocolo do Projudi

A aplicação é uma evolução natural e necessária do processo de assinatura digital no Projudi para macOS, alinhada com práticas modernas de segurança e diretrizes de proteção de dados do Poder Judiciário brasileiro.