| Requisito | Descrição | Release | Obs |
| i | Possibilitar a imposição das configurações do software, em particular das regras de assinatura, políticas de assinaturas, padrões atendidos, etc. | CE 0.1 | |
| ii | Oferecer mecanismo de obtenção da LCR através de agente externo ao software de assinatura (proxy) | CE 0.2 | |
| iii | Oferecer mecanismo de trilha de auditoria à qual o operador não tenha acesso | CE 0.3 | |
| iv | Fornecer opcionalmente interface de obtenção de TST através do protocolo HTTP | PE 0.3 | |
| v | Suportar CSP's tanto no padrão PKCS#11 quanto no padrão MS CryptoAPI | PE 0.1 | |
| vi | Suportar pelo menos os sistemas operacionais MS Windows e Linux | PE 0.1 | |
| vii | Fornecer opcionalmente interface web de aplicativo | WE 0.1 | |
| viii | Fornecer interface de programação de aplicações com capacidade de assinar conteúdos voláteis (transações eletrônicas) | WE 0.3 | |
| ix | Fornecer plugin para o cliente de correio eletrônico Thuderbird com a capacidade de assinar mensagens de correio eletrônico | ||
| x | Suportar o formato de envelopamento CMS, produzindo arquivo com extensão .p7s | PE 0.1 | |
| xi | Suportar opcionalmente o formato de envelopamento XMLDSig, produzindo arquivo com extensão .xml | ||
| xii | Codificar opcionalmente documento eletrônico no formato MIME, com tipos registrados MIME, antes de sua assinatura | ||
| xiii | Incluir na assinatura indicador de política de assinatura em conformidade com a ICP-Brasil | PE 0.3 | |
| xiv | É obrigatória a inclusão no mínimo dos seguintes atributos assinados: ContentType, MessageDigest, SigningCertificateV2 e SignaturePolicy | PE 0.3 | Os dois primeiros atributos estão presentes em PE 0.1 e o terceiro está planejado para PE 0.2 |
| xv | Identificar e manipular certificados digitais emitidos no âmbito da ICP-Brasil, bem como suas extensões, campos e "campos específicos ICP-Brasil" | PE 0.3 | |
| xvi | Proteger a assinatura contra falsificações e os conteúdos, contra alterações | ||
| xvii | Permitir a demonstração do documento ao qual a assinatura se refere, de que o documento não foi alterado, do titular e do conteúdo do certificado | ||
| xviii | Verificar opcionalmente a conformidade do certificado antes da assinatura | PE 0.1 | |
| xix | Permitir opcionalmente a realização da assinatura na presença de inconformidades, exceto a expiração ou revogação | PE 0.2 | |
| xx | Permitir a visualização do conteúdo antes ou depois da assinatura | PE 0.2 | Visualização direta para arquivos texto; arquivos de aplicativos com formatos próprios serão salvos em disco. |
| xxi | Assegurar que apenas componentes estáticos sejam assinados | PE 0.1 | |
| xxii | Em assinaturas em lote, permitir, opcionalmente, a habilitação da chave privada uma única vez | PE 0.2 | Esse recurso é controlado pelos providers associados ao token criptográfico do usuário. A aplicação só controla o PIN no caso do KeyStore PKCS#12 |
| xxiii | Utilizar os algoritmos definidos no DOC-ICP-01.01 | PE 0.1 | São igualmente suportados os algoritmos definidos na RFC 3370 |
| xxiv | Verificar obrigatoriamente a validade de uma assinatura, utilizando: o documento eletrônico para o qual a assinatura digital ICP-Brasil foi criada, a assinatura digital ICP-Brasil do documento eletrônico, o certificado digital do signatário e sua correspondente cadeia de certificação, elementos utilizados para verificação do estado de revogação dos certificados da cadeia de certificação, a política de assinatura, cujo identificador encontra-se na assinatura digital ICP-Brasil e um dos algoritmos definidos no DOC-ICP-01.01 | PE 0.3 | Requisito atendido desde PE 0.1 exceto a verificação da conformidade da assinatura às políticas de assinatura da ICP-Brasil |
| xxv | Assegurar que o estado criptográfico da assinatura digital seja válido e o certificado digital correspondente à chave privada utilizada para geração da assinatura seja válido | PE 0.1 | |
| xxvi | Verificar a conformidade da assinatura com as políticas de assinatura estabelecidas | PE 0.3 | |
| xxvii | Verificar a validade do carimbo do tempo, conforme disposto no documento DOC-ICP-12 | PE 0.3 | |
| xxviii | Em documentos já assinados, efetuar a verificação de todas as assinaturas anteriores pelo menos na última co-assinatura | PE 0.1 | |
| xxixi | A cada verificação, exibir o estado de cada assinatura avaliada em termos de válido, inválido e indeterminado, identificando também os signatários | PE 0.2 | |
| xxx | Verificar se a assinatura foi realizada durante o prazo de validade do certificado | PE 0.2 | |
| xxxi | Suportar todas as políticas ICP-Brasil para assinatura digital no formato CMS | PE 0.3 | |
| xxxii | Suportar opcionalmente as mesmas políticas para o formato XMLDSig | ||
| xxxiii | Suportar os tipos de compromisso definidos na RFC 5126 | PE 0.2 | |
| xxxiv | Suportar os tipos de compromisso definidos no Anexo I do DOC-ICP-15.01 | PE 0.3 | |
| xxxv | Fornecer interface internacionalizada, no mínimo em Português e Inglês | PE 0.1 | |
| xxxvi | Fornecer suporte a outras PKI's sob a forma de arquitetura de implementação desacoplada das regras nacionais, assegurando a inclusão de uma "PKI genérica" | PE 0.2 |
| Requisito | Descrição | Release | Obs |
| I.1 | Software ICP-Brasil deve ser capaz de manipular certificados digitais que implementam a versão 3 do padrão ITU-T X.509 (X.509v3). | PE 0.1 | |
| I.2 | Suportar o formato DER de certificado | PE 0.1 | 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. | PE 0.3 | Ver casos de uso Validar certificado e Verificar revogação |
| I.4 | Validar os certificados presentes no certification path | PE 0.3 | Ver caso de uso Validar certificado |
| I.5 | Validar as restrições do certification path | ||
| I.6 | Validar a consistência do propósito do certificado com a função pretendida | PE 0.3 | Ver caso de uso Validar certificado |
| I.7 | Informar ao operador os problemas de não conformidade do certificado | PE 0.1 | |
| I.8 | Informar ao operador o escopo da PKI da qual participa o certificado | PE 0.2 | |
| I.9 | Informar ao operador as possibilidades de uso do seu certificado digital | PE 0.2 | Ver caso de uso Visualizar certificado digital |
| I.10 | Informar ao operador os atributos dos certificados digitais da ICP-Brasil | PE 0.3 | Ver caso de uso Visualizar certificado digital |
| I.11 | Informar ao operador o conteúdo dos campos Subject e Issuer de um certificado digital | PE 0.2 | Ver caso de uso Visualizar certificado digital |
| I.12 | Informar ao operador o conteúdo de um certificado digital de entidade final | PE 0.2 | Ver caso de uso Visualizar certificado digital |
| I.13 | Informar ao operador o conteúdo de certificados de CA | PE 0.2 | Ver caso de uso Visualizar certificado digital |
| I.14 | Verificar a revogação do certificado digital | PE 0.2 | Ver caso de uso Verificar revogação |
| I.15 | Implementar capacidade de manipulação de CRLs | PE 0.2 | Ver Implementação das classes de persistência |
| I.16 | Configurar a busca de CRLs | PE 0.2 | |
| I.17 | Configurar a verificação da revogação do certificado digital | PE 0.1 | |
| I.18 | Informar ao operador a desabilitação da verificação de revogação do certificado | ||
| I.19 | Implementar busca de CRLs | PE 0.1 | A aplicação suporta informações de revogação apenas através de LCRs, que são buscadas diretamente na Internet através dos protocolos HTTP e HTTPS |
| I.20 | Implementar procedimentos aprovados de verificação de revogação em CRL | PE 0.2 | Ver caso de uso Verificar revogação |
| I.21 | Buscar a CRL a partir do CDP | PE 0.1 | Apenas o CDP é consultado; se a extensão não estiver presente, a revogação não é verificada |
| I.22 | Fornecer informação ao operador sobre a verificação da LCR | PE 0.2 | |
| I.23 | Proteger o PIN, senhas e dados sensíveis | PE 0.1 | 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 pirada. 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. |
| I.24 | Não manter chaves criptográficas em cache | PE 0.2 | A aplicação delega o acesso à chave privada de assinatura ao provedor de serviços criptográficos instalado pelo usuário. Correntemente, são suportados provedores para a CryptoAPI do Microsoft Windows, utilizando o provider Java SunMSCAPI, e para o padrão RSA PKCS#11, utilizando o provider Java SunPKCS11 (release PE 0.1). Para atender ao Requisito xxii, oriundo do DOC-ICP.15, na release PE 0.2 o PIN é mantido opcionalmente em cache ao se utilizar o provider PKCS#12, que é sobrescrito ao final do uso. |
| I.25 | Implementar garantia de integridade e origem de software | ||
| I.26 | Especificar procedimentos de proteção de integridade | ||
| I.27 | Implementar proteção a dados sensíveis | PE 0.1 | Ver comentário ao requisito I.23 |
| I.28 | Fornecer documentação mínima (Manual de usuário, Manual de instalação e Especificação técnica.) | ||
| I.29 | Implementar interface com o operador em Português | PE 0.1 | |
| I.30 | Fornecer documentação em Português | PE 0.1 | |
| I.31 | Especificar o ambiente de operação do software | PE 0.1 | O aplicativo executa em qualquer sistema para o qual exista JVM 1.6 ou superior e suporte ao provider PKCS#11. |
| I.32 | Informar ao operador a versão e a origem do software | ||
| II.1 | Identificar os diferentes tipos de certificados digitais da ICP-Brasil | PE 0.3 | |
| II.2 | Especificar os serviços de segurança suportados | PE 0.3 | A release PE 0.1 suporta: geração e verificação de documentos eletrônicos assinados digitalmente aderentes aos formatos CMS SignedData Attached, CMS SignedData Detached; manipulação de chaves criptográficas e certificados digitais armazenados em dispositivos criptográficos de hardware; verificação de revogação por meio da busca de LCR a verificação de LCRs obtidas. A release PE 0.2 deve suportar a inserção de LCRs no documento eletrônico assinado digitalmente, enquanto que a a inclusão e a verificação de atributo não assinado TST está prevista para a release PE 0.3. |
| II.3 | Identificar as extensões padrão do certificado digital | PE 0.2 | Ver Implementação das classes de persistência |
| II.4 | Validar a conformidade do propósito do certificado com a função pretendida | PE 0.1 | Ver caso de uso Validar certificado |
| II.5 | Implementar assinatura digital em formatos padrão | PE 0.1 | Suporta ao padrão CMS, tal como definido na RFC 3852 |
| II.6 | Incluir na assinatura o atributo autenticado Signing Time | PE 0.1 | |
| II.7 | Implementar co-assinatura de documentos | PE 0.1 | |
| II.8 | Implementar processo aprovado de assinatura | PE 0.2 | A release PE 0.1 permite: a escolha do certificado de assinatura e realiza a verificação de conformidade do certificado. Em documentos co-assinados, realiza a verificação das assinaturas anteriores e alerta para a inclusão do instante corrente na assinatura. A release PE 02. deverá também: exibir todas as informações do certificado selecionado e dos certificados dos assinanates e permitir a visualização do documento assinado. |
| II.9 | Extrair o conteúdo de um documento assinado | PE 0.2 | Documentos de texto são exibidos diretamente pelo aplicativo; documentos com formatos próprios são salvos em disco, para visualização independente. |
| II.10 | Incluir no documento assinado o certificado de assinatura e sua cadeia | PE 0.1 | |
| II.11 | Fornecer cópia do documento assinado ao operador | PE 0.1 | |
| II.12 | Verificar a assinatura de um documento | PE 0.1 | |
| II.13 | Implementar processo aprovado de verificação | PE 0.1 | |
| II.14 | Informar ao operador o resultado da verificação de assinatura | PE 0.1 |