Conformidade ao Manual de Condutas Técnicas 4 da ICP-Brasil

Este documento descreve o estado atual de atendimento às especificações do MCT-4 para software de assinatura digital no âmbito da ICP-Brasil pelo projeto Signthing.
Atualizado em: 02/03/2009

 

Requisito Descrição Observações
I.1 Manipular certificados digitais no padrão X.509 Os seguintes campos da estrutura TBSCertificate são explicitamente manipulados pela aplicação: serialNumber, signature, issuer, validity, subject e subjectPublicKeyInfo. Além disso, as seguintes extensões são igualmente tratadas: 2.5.29.32 - Certificate Policies, 2.5.29.31 - CRL Distribution Points, 2.5.29.15 - Key Usage, 2.5.29.17 - Subject Alternative Names, 2.5.29.37 - Extended Key Usage, 2.5.29.19 - Basic Constraints e 2.5.29.35 - Authority Key Identifier.
I.2 Suportar o formato DER de certificado Todas as operações são realizadas com o formatdo DER. As codificações DER em base64 e PEM não são suportadas.
I.3 Implementar processo de validação aprovado Ver Caso de uso: Validar certificado.
I.4 Validar os certificados presentes no certification path Ver Caso de uso: Validar certificado.
I.5 Validar as restrições do certification path Ver Caso de uso: Validar certificado.
I.6 Validar a consistência do propósito do certificado com a função pretendida Ver Caso de uso: Validar certificado.
I.7 Informar ao operador os problemas de não conformidade do certificado O produto da validação do certificado é disponibilizado na forma de um documento XML, que informa ao operador todos as inconformidades eventualmente encontradas.
I.8 Informar ao operador o escopo da PKI da qual participa o certificado Não implementado.
I.9 Informar ao operador as possibilidades de uso do seu certificado digital Não implementado.
I.10 Informar ao operador os atributos dos certificados digitais da ICP-Brasil Implementado parcialmente.
I.11 Informar ao operador o conteúdo dos campos Subject e Issuer de um certificado digital Atendido
I.12 Informar ao operador o conteúdo de um certificado digital de entidade final A aplicação dispõe de interface para a seleção de um dos certificados incluídos no repositório corrente. Para cada certificado selecionado são exibidos os campos serialNumber, issuer, validity e subject.
I.13 Informar ao operador o conteúdo de certificados de CA Não implementado.
I.14 Verificar a revogação do certificado digital Ver caso de uso Verificar Revogação.
I.15 Implementar capacidade de manipulação de CRLs Os seguintes campos da estrutura TBSCertList são diretamente manipulados: signature, issuer, thisUpdate, nextUpdate e revokedCertificates. Se presentes na CRL, as extensões não são consideradas no processamento.
I.16 Configurar a busca de CRLs A aplicação admite apenas a configuração de se um certificado deve ou não ter sua revogação verificada. Se esta opção estiver marcada, ela sempre busca a CRL.
I.17 Configurar a verificação da revogação do certificado digital Atendido.
I.18 Informar ao operador a desabilitação da verificação de revogação do certificado Não implementado.
I.19 Implementar busca de CRLs A aplicação suporta a busca de CRL através dos protocolos HTTP ou HTTPS.
I.20 Implementar procedimentos aprovados de verificação de revogação em CRL Ver Caso de uso: Validar certificado.
I.21 Buscar a CRL a partir do CDP O dispositivo de gerenciamento de CRL obtém o URL de publicação da lista diretamente da extensão 2.5.29.31, mas somente para os protocolos HTTP e HTTPS.
I.22 Fornecer informação ao operador sobre a verificação da LCR O produto da verificação da CRL é disponibilizado na mesma janela de retorno da verificação de conformidade do certificado.
I.23 Proteger o PIN, senhas e dados sensíveis A classe javax.swing.JTextField armazena internamente os dados como uma java.lang.String, com isso não permitindo a eliminação do PIN por sobrescrita de valores, já que uma nova atribuição ao campo simplesmente descarta o valor anterior para o Garbage Collector, mantendo-o em memória. Além disso, a classe devolve o valor corrente do campo como uma String para quaisquer ActionListener instalado, aumentando o problema. A extensão javax.swing.JPasswordField não elimina esses problemas, apenas evita a visualização da senha por um papagaio de pirata. Em vista disso, foi desenvolvida uma nova implementação para JPasswordField, que armazena o campo num array de caracteres (permitindo a sobrescrita de valores) e não devolve seu valor corrente para os ActionListener. Esta implementação é utilizada para qualquer provedor de serviços criptográficos que não o MS CryptoAPI, que utiliza sua própria interface de captação de PIN.
I.24 Não manter chaves criptográficas em cache Ver Requisito I.23.
I.25 Implementar garantia de integridade e origem de software Não implementado.
I.26 Especificar procedimentos de proteção de integridade Não implementado.
I.27 Implementar proteção a dados sensíveis Ver observações ao requisito I.23.
I.28 Fornecer documentação mínima (Manual de usuário, Manual de instalação e Especificação técnica.) Não implementado.
I.29 Implementar interface com o operador em Português Todas as mensagens e informações textuais estão disponíveis em Português ou Inglês, sendo utilizada a localização nacional declarada na configuração do aplicativo ou, na falta desta, a localização default da JVM. Caso a JVM esteja localizada em idioma não suportado, o idioma inglês é assumido como padrão.
I.30 Fornecer documentação em Português Não implementado.
I.31 Especificar o ambiente de operação do software O aplicativo é compatível com qualquer sistema operacional que suporte a versão 1.6 da JVM com a extensão Unlimited Strength Java(TM) Cryptography Extension Policy Files instalada previamente. Do mesmo modo, o dispositivo para gerenciamento das chaves criptográficas selecionado pelo usuário deverá estar apropriadamente instalado. Caso a instalação do dispositivo requeira a utilização da MS CryptoAPI, o provider SunMSCAPI deverá estar instalado no diretório lib/ext e propriamente configurado no arquivo lib/security/java.security. Caso a instalação do dispositivo requeira a utilização de driver PKCS#11, o provider SunPKCS11 deverá estar instalado e apropriadamente configurado (ver Java PKCS#11 Reference Guide
I.32 Informar ao operador a versão e a origem do software Atendido.
II.1 Identificar os diferentes tipos de certificados digitais da ICP-Brasil Dentre as informações fornecidas ao operador (ver requisito I.12), a classe de segurança do certificado selecionado é exibida.
II.2 Especificar os serviços de segurança suportados Presentemente, os seguintes serviços são suportados:
  • Geração e verificação de documentos eletrônicos assinados digitalmente aderentes aos formatos CMS "SignedData" Attached, CMS "SignedData" Detached, em estrita conformidade com a RFC 2630. Documentos CMS produzidos em conformidade com a RFC 2315 não são, porém, suportados.
  • Manipulação de chaves criptográficas e certificados digitais armazenados em dispositivos criptográficos de hardware, desde que aderentes ao padrão PKCS#11 ou ao definido na MS CryptoAPI.
  • Verificação de revogação por meio da busca de LCR.
II.3 Identificar as extensões padrão do certificado digital Ver requisito I.1.
II.4 Validar a conformidade do propósito do certificado com a função pretendida Ver Caso de uso: Validar certificado.
II.5 Implementar assinatura digital em formatos padrão (CMS "SignedData" Attached, CMS "SignedData" Detached ou XML Signature) Ver requisito II.2.
II.6 Incluir na assinatura o atributo autenticado Signing Time Atendido.
II.7 Implementar co-assinatura de documentos Atendido.
II.8 Implementar processo aprovado de assinatura Presentemente a aplicação:
  • Possibilita a escolha do certificado digital de assinatura;
  • Realiza a verificação do certificado escolhido, alertando à entidade usuária externa , quando for o caso, quais requisitos de verificação de certificado digital não estão em conformidade;
  • Realiza a verificação das assinaturas digitais já existentes e
  • Permite a visualização do instante corrente, informando que será adicionado ao documento eletrônico final a ser gerado.
II.9 Extrair o conteúdo de um documento assinado Não implementado.
II.10 Incluir no documento assinado o certificado de assinatura e sua cadeia Atendido.
II.11 Fornecer cópia do documento assinado ao operador A aplicação assina o documento e o salva em disco, no mesmo local do arquivo original, com extensão escolhida pelo usuário (.p7 por default).
II.12 Verificar a assinatura de um documento O aplicativo realiza a verificação criptográfica da assinatura de cada um dos assinanates.
II.13 Implementar processo aprovado de verificação Implementado parcialmente.
II.14 Informar ao operador o resultado da verificação de assinatura Implementado parcialmente.
Recomendação Descrição Observações
I.1 Implementar procedimentos aprovados de verificação de revogação por OCSP Nâo implementado.
I.2 Configurar a consulta à CRL mais recente Não implementado.
I.3Configurar a busca de CRL por um agente de Proxy Não implementado.
II.1 Configurar trilha de auditoria Não implementado.
II.2Incluir a CRL no documento assinado Nâo implementado.