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:
|
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:
|
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.3 | Configurar a busca de CRL por um agente de Proxy | Não implementado. |
II.1 | Configurar trilha de auditoria | Não implementado. |
II.2 | Incluir a CRL no documento assinado | Nâo implementado. |