Assinatura Electrónica Qualificada
Daniel Tiago Nave Prata de Almeida
Dissertação para obtenção do Grau de Mestre em
Engenharia Informática e de Computadores
Júri
Presidente:
Orientador:
Co-Orientador:
Vogal:
Prof.
Prof.
Prof.
Prof.
Dr.
Dr.
Dr.
Dr.
José Carlos Martins Delgado
Fernando Henrique Corte Real Mira da Silva
Carlos Nuno da Cruz Ribeiro
Ricardo Jorge Fernandes Chaves
Outubro 2009
Agradecimentos
Ao Instituto Superior Técnico, a minha alma mater, e a todos os que nesta grande escola
contribuiram para a minha formação.
Quero agradecer ao meu irmão, Sérgio Almeida, pela paciência em ouvir-me explicar os
minuciosos detalhes da implementação. Aos meus colegas e amigos Telmo Rodrigues e André
Almeida, pelo insight e pelas discussões de diversos temas na área da segurança informática.
Agradeço aos meus colegas do Centro de Informática do Instituto Superior Técnico, André
Brioso, Angelina Silva, António Silva, Cláudio Martins e Jorge Matias pelo excelente ambiente
de trabalho e aprendizagem que me proporcionaram, e em especial ao Miguel Cabeça pelos seus
preciosos conselhos e ensinamentos.
Por fim, quero agradecer ao Prof. Fernando Silva e ao Prof. Carlos Ribeiro pela proposta do
desafio, pela orientação e por me disponbilizarem todos os meios necessários à realização deste
trabalho.
Lisboa, Outubro 2009
Daniel Tiago Nave Prata de Almeida
Aos meus pais
Resumo
À medida que os documentos vão sendo armazenados em suporte digital, a necessidade das
organizações gerirem documentos assinados electronicamente é uma realidade eminente. Esta
dissertação aborda este problema actual, propondo uma solução e demonstrando a sua exequibilidade através da implementação da solução proposta, um sistema de assinatura electrónica de
documentos.
Este sistema permite a realização de assinaturas electrónicas qualificadas de qualquer tipo de
documento passı́vel de representação digital, utilizando o recentemente criado cartão de cidadão,
o que confere às assinaturas produzidas propriedades fundamentais como o não-repúdio e a
validade legal em todos os Estados Membros da União Europeia.
As assinaturas produzidas incorporam outras propriedades qualificantes, como o compromisso do assinante relativamente ao documento assinado, ou o cargo (i.e a qualidade) do assinante numa organização. As assinaturas incorporam também mecanismos de protecção da sua
validade a longo prazo, no caso em que a segurança tenha sido comprometida, pelas mais diversas razões. O formato sugerido e adoptado para as assinaturas, é o formato XAdES uma
extensão das assinaturas XMLDsig, que se encontra normalizado.
O sistema de assinatura proposto é uma web application independente do sistema operativo, oferecendo uma boa facilidade de integração e implantação num qualquer contexto organizacional. Este sistema foi implementado recorrendo única e exclusivamente a tecnologia Open
Source.
Abstract
As documents are being stored in digital form, the need for organizations to manage documents electronically signed is an imminent reality. This thesis addresses this actual problem,
proposing a solution and demonstrating its feasibility through implementation of the proposed
solution, an electronic signature system for documents.
This system allows the creation of qualified electronic signatures of any document capable
of digital representation, using the newly created portuguese citizen’s card, which gives the
signatures produced fundamental properties such as non-repudiation and legal validity in all
European Union Member States.
The signatures produced incorporate other qualifying properties as the commitment of the
signer relative to the signed document, or the role of the signer in an organization. The signatures
also incorporate mechanisms to protect their validity in the long term, in the case where security
has been compromised, for any different reasons. The suggested and adopted format for the
signatures, is XAdES an extension of XMLDSIG signatures, which is a standard.
The signature system proposed is a web application that can be used regardless of operating
system, offering a good ease of integration and deployment in any organizational context. This
system was implemented using solely Open Source technology.
Palavras Chave
Keywords
Palavras Chave
Assinatura Electrónica Qualificada
Cartão de Cidadão
Certificados X.509
Documento Electrónico
Não Repúdio
Segurança Electrónica
XAdES
Keywords
Digital Qualified Signature
Cartão de Cidadão
X.509 Certificates
Electronic Document
Non repudiation
Electronic Security
XAdES
Índice
1 Introdução
1.1
1
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.1.1
Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.1.2
Objectivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.1.3
Estrutura do Documento . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.1.4
Notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2 State of the Art
5
2.1
Certificados Digitais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2
Assinatura Electrónica Qualificada . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.3
Cartão de Cidadão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.3.1
Funcionalidades Electrónicas . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.3.2
Legislação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.3.3
Certificados X.509 / PKIX . . . . . . . . . . . . . . . . . . . . . . . . . .
11
2.3.4
Certificado de Assinatura Digital Qualificada . . . . . . . . . . . . . . . .
12
XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
2.4.1
XML Signatures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
2.4.2
XAdES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.4.2.1
XAdES-BES (Basic) . . . . . . . . . . . . . . . . . . . . . . . . .
17
2.4.2.2
XAdES-T (Time Stamped) . . . . . . . . . . . . . . . . . . . . .
17
2.4
i
2.4.2.3
XAdES-C (Complete) . . . . . . . . . . . . . . . . . . . . . . . .
17
2.4.2.4
XAdES-X (Extended) . . . . . . . . . . . . . . . . . . . . . . . .
17
2.4.2.5
XAdES-X-L (Extended Long term) . . . . . . . . . . . . . . . .
18
2.4.2.6
XAdES-A (Archival)
. . . . . . . . . . . . . . . . . . . . . . . .
18
Outras Propriedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
2.5
CAdES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
2.6
PAdES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
2.7
Trusted timestamping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
2.4.3
3 Proposta
3.1
23
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
3.1.1
Formato das assinaturas . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
3.1.2
Temporalidade da assinatura . . . . . . . . . . . . . . . . . . . . . . . . .
24
3.1.3
Assinaturas numa organização . . . . . . . . . . . . . . . . . . . . . . . .
24
3.1.4
Compromisso da assinatura . . . . . . . . . . . . . . . . . . . . . . . . . .
24
3.1.5
Validade a longo prazo . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
3.2
Objectivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
3.3
Arquitectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
4 Implementação
31
4.1
Protótipo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
4.2
AEQ Docs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
4.2.1
XAdESSigner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
4.2.2
XAdESValidator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
4.2.3
XAdESSignatureTimeStamper . . . . . . . . . . . . . . . . . . . . . . . .
38
4.2.4
XAdESCounterSigner . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
ii
4.2.5
Assinatura Electrónica Qualificada - Java Applet . . . . . . . . . . . . . .
40
4.2.6
Web Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
5 Discussão
45
5.1
CAdES, PAdES ou XAdES? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
5.2
Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
5.3
Segurança . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
5.4
Integração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
5.5
Objectivos atingidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
6 Conclusões
49
6.1
Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
6.2
Trabalho Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
55
Bibliography
iii
iv
Lista de Figuras
2.1
Hierarquia de entidades de certificação (Certification Authorities) dos certificados
presentes no Cartão de Cidadão . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.2
Modelo fı́sico do cartão de cidadão, frente e verso . . . . . . . . . . . . . . . . . .
7
2.3
Aplicações residentes no chip EMV do cartão de cidadão . . . . . . . . . . . . . .
8
2.4
Perfil de um certificado X.509 versão 3 . . . . . . . . . . . . . . . . . . . . . . . .
11
2.5
Extensão Key Usage dos certificados X.509 presentes no Cartão de Cidadão . . .
12
2.6
Data Section do certificado X.509 versão 3 de Assinatura Digital Qualificada de
um Cartão de Cidadão de teste . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2.7
Estrutura de uma assinatura XML . . . . . . . . . . . . . . . . . . . . . . . . . .
15
2.8
Utilização do elemento CounterSignature XAdES . . . . . . . . . . . . . . . . . .
19
2.9
Estrutura das assinaturas XAdES . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
3.1
Componentes de um serviço de assinatura electrónica qualificada . . . . . . . . .
27
3.2
Arquitectura da solução proposta . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
4.1
Invocação do XAdESSigner através da linha de comandos . . . . . . . . . . . . .
32
4.2
Assinatura XMLDsig gerada pelo XAdESSigner . . . . . . . . . . . . . . . . . . .
33
4.3
Extensão XAdES-BES da assinatura XMLDsig gerada pelo XAdESSigner . . . .
36
4.4
Invocação do XAdESValidator através da linha de comandos . . . . . . . . . . .
38
4.5
Invocação do XAdESSignatureTimeStamper através da linha de comandos
. . .
38
4.6
Extensão XAdES-T gerada pelo XAdESSignatureTimeStamper . . . . . . . . . .
39
v
4.7
Invocação do XAdESCounterSigner através da linha de comandos
. . . . . . . .
39
4.8
Invocação do XAdESCounterSigner através da linha de comandos
. . . . . . . .
40
4.9
Assinatura Electrónica Qualificada - Java Applet . . . . . . . . . . . . . . . . . .
41
4.10 AEQ Docs - Assinatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
4.11 AEQ Docs - Validador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
4.12 AEQ Docs - Notariado antes da realização da contra-assinatura . . . . . . . . . .
44
4.13 AEQ Docs - Notariado após a realização da contra-assinatura . . . . . . . . . . .
44
vi
Lista de Tabelas
2.1
Aplicações electrónicas residentes no Cartão de Cidadão . . . . . . . . . . . . . .
vii
8
viii
Abreviaturas
AEQ Assinatura Electrónica Qualificada
ASN Abstract Syntax Notation
CA Certification Authority
CAdES Cryptographic Message Syntax Advanced Electronic Signatures
CMS Cryptographic Message Syntax
CRL Certificate Revocation List
CRLF Carriage Return Line Feed
CSS Cascading Style Sheet
DER Distinguished Encoding Rules
ECEE Entidade Certificadora Comum do Estado
EMV Europay Mastercard Visa
ETSI European Telecommunications Standards Institute
GNS Gabinete Nacional de Segurança
HTML Hyper Text Markup Language
HTTP Hypertext Transfer Protocol
HTTPS Hypertext Transfer Protocol Secure
IETF Internet Engineering Task Force
ISO International Organization for Standartization
ITU International Telecommunication Union
JDK Java Development Kit
LDAP Lightweight Directory Access Protocol
MD5 Message-Digest Algorithm 5
MySQL My Structured Query Language
OCSP Online Certificate Status Protocol
ix
PAdES Portable Document Format Advanced Electronic Signatures
PDF Portable Document Format
PHP PHP Hypertext Preprocessor
PIN Personal Identification Number
PKCS Public Key Cryptography Standards
PKI Public Key Infrastructure
RFC Request For Comments
RSA Rivest, Shamir and Adleman
SCEE Sistema de Certificação Electrónica do Estado
SHA Secure Hash Algorithm
TSA Timestamp Authority
URI Uniform Resource Indentifier
W3C World Wide Web Consortium
WYSIWYS What You See Is What You Sign
XAdES Extensible Markup Language Advanced Electronic Signatures
XMLDsig Extensible Markup Language Signature
XML Extensible Markup Language
XSD Extensible Markup Language Schema
x
1
Introdução
It is far better to be silent than merely to increase the quantity of bad books.
– Voltaire
1.1
Introdução
Esta dissertação, inserida na área da segurança informática, apresenta uma solução no
âmbito das assinaturas electrónicas qualificadas e discute uma proposta de implementação de
um sistema de assinatura electrónica qualificada no contexto de uma organização.
1.1.1
Motivação
As assinaturas electrónicas são usadas numa vasta área de contextos e aplicações, dando
origem a novos requisitos de produtos e serviços relacionados com a assinatura electrónica.
Surgiram da necessidade de transpor a tradicional assinatura manuscrita para os documentos
electrónicos, colmatando as falhas de segurança existentes, uma vez que a tradicional assinatura
manuscrita não é segura, pois é facilmente falsificável e consequentemente não se pode garantir
a sua autenticidade nem a sua veracidade, podendo inclusive vir a ser repudiada pelo legı́timo
assinante.
Os sistemas de assinatura electrónica tipicamente utilizados, são sistemas proprietários dependentes do sistema operativo e do tipo de documento, oferecendo bastantes limitações quanto
à validação da assinatura, pois o receptor da assinatura terá que dispor dos mesmos meios que o
assinante de forma a que a possa validar. Esta validação é tipicamente realizada no sistema do
utilizador, pelo que o processo de validação poderá ser maliciosamente subvertido, apresentando
um estado erróneo de validade da assinatura, induzindo o utilizador em erro.
As organizações necessitam de assinaturas electrónicas seguras que permitam garantir a
2
CHAPTER 1. INTRODUÇÃO
autenticidade, a temporalidade e o não repúdio dos documentos assinados electronicamente,
assim como garantir que estes permaneçam válidos por longos perı́odos de tempo, mesmo que a
segurança de uma assinatura electrónica seja futuramente comprometida.
A interoperabilidade das assinaturas electrónicas tem vindo a ser promovida pela União
Europeia (e consequentemente pelo Estado Português), assim como a harmonização do critério
legal das assinaturas electrónicas, originando uma framework legislativa coerente, promovida
através da Directiva Europeia 1999/03/EC, de 13 de Dezembro de 1999 (15), e de outras decisões
da Comissão Europeia. Estas medidas pretendem contribuir para a aceitação geral dos métodos
de autenticação electrónica, de forma a garantir que as assinaturas electrónicas constituam prova
legal em todos os Estados Membros.
O recente surgido documento de identificação electrónica português, Cartão de Cidadão,
promove o desenvolvimento tecnológico e a modernização administrativa e organizacional. Na
sua vertente digital, promove o desenvolvimento das transacções electrónicas dando-lhes a segurança necessária através da autenticação forte e da assinatura electrónica.
1.1.2
Objectivos
O objectivo principal da proposta descrita neste documento é a concepção de um sistema
de assinatura de documentos electrónicos (i.e. um conjunto de bytes) através da utilização de
uma assinatura electrónica qualificada, que garanta o valor probatório dos documentos assinados
electronicamente de acordo com a Lei Portuguesa (11; 12; 10) e com a Directiva Europeia (15)
para as assinaturas electrónicas, de forma a que as assinaturas produzidas tenham validade legal
em todos os Estados Membros da União Europeia.
O sistema de assinatura que este documento descreve tem uma vasta aplicabilidade, podendo
ser adoptado por qualquer organização ou entidade que necessite de utilizar e gerir documentos
electrónicos assinados digitalmente, atestando a sua veracidade através da assinatura electrónica
qualificada de um indivı́duo e de uma contra-assinatura da organização.
Em traços gerais, os requisitos que este sistema deverá cumprir são os seguintes:
• Fornecer ao utilizador um mecanismo simples de criação de assinaturas electrónicas, necessitando apenas de um web browser, e utilizando mecanismos seguros que possam ser
mantidos sob o seu controlo.
1.1. INTRODUÇÃO
3
• Permitir ao utilizador realizar uma assinatura electrónica qualificada de um documento
electrónico, produzindo um documento num formato aberto, bem definido e normalizado
que contenha o documento electrónico assinado e a assinatura, assim como permitir ao
utilizador a sua validação (local e remota) e verificação WYSIWYS (What you see is what
you sign) do conteúdo assinado antes da sua submissão ou partilha electrónica.
• No contexto de uma organização, permitir ao utilizador a submissão electrónica do documento assinado num sistema de notariado da organização, que atestará as propriedades
qualificantes reclamadas pelo indivı́duo, contra-assinando a assinatura inicial e as propriedades qualificantes, produzindo uma assinatura que possa ser facilmente validada por
terceiros.
• Permitir à organização a validação temporal, o armazenamento, e a protecção a longo prazo
das assinaturas, recorrendo a carimbos temporais electrónicos (Trusted Timestamping), ou
outros mecanismos.
Um outro objectivo foi a implementação do sistema descrito recorrendo apenas a tecnologia
normalizada e a software Open Source, de modo a minimizar os seus custos e a obter um
elevado grau de portabilidade entre diferente arquitecturas/sistemas operativos, facilitando e
transparecendo todo o processo de produção e validação das assinaturas.
1.1.3
Estrutura do Documento
No capı́tulo 2 é apresentado o state of the art das assinaturas electrónicas.
No capı́tulo 3 são enumerados os problemas, requisitos e objectivos e é proposta uma solução
e apresentada a sua arquitectura.
No capı́tulo 4 são descritos os componentes do sistema proposto e os seus detalhes de implementação.
No capı́tulo 5 é apresentada uma discussão sobre diversos aspectos da implementação realizada.
No capı́tulo 6 são apresentadas as conclusões e o trabalho futuro.
4
CHAPTER 1. INTRODUÇÃO
1.1.4
Notas
Os termos digital e electrónico(a) utilizados ao longo deste documento são intercambiáveis,
tendo o mesmo significado.
A palavra “documento” refere-se não só a documentos textuais passı́veis de representação
escrita, mas também a documentos não passı́veis de representação escrita, como por exemplo,
vı́deo. Deverá ser entendida como um qualquer tipo de dados, passı́vel de representação digital.
2
State of the Art
The release of atomic energy has not created a new problem. It has merely made more
urgent the necessity of solving an existing one.
– Albert Einstein
2.1
Certificados Digitais
“Certificate: a signed instrument that empowers the Subject. It contains at least an Issuer
and a Subject.” (Ellison et al, 1999) (17)
Um certificado digital é um documento electrónico assinado criptograficamente por uma
autoridade de certificação, associando uma chave pública a uma entidade (13). Esta entidade
pode ser uma pessoa, uma organização, uma aplicação informática ou qualquer outra entidade
confiável pela autoridade de certificação. No certificado reside ainda um conjunto de atributos
que definem o propósito do mesmo (e.g. Assinatura) e que caracterizam a entidade certificada.
Uma autoridade de certificação é uma entidade que gere certificados, definindo polı́ticas,
mecanismos de geração e distribuição de certificados e listas de revogação de certificados (i.e.
certificados invalidados). Tipicamente estas autoridades dispõem de recursos técnicos e humanos
que satisfaçam elevados padrões de operacionalidade e de segurança (35; 8). As autoridades de
certificação podem utilizar hierarquias de certificação assinando certificados que contêm a chave
pública de outras autoridades de certificação. Na Fig.2.1 ilustra-se a hierarquia de entidades de
certificação dos certificados presentes no Cartão de Cidadão.
A segurança de um certificado digital baseia-se em criptografia de chave pública (27), de
forma a tentar impossibilitar ou dificultar ao máximo a sua falsificação. São documentos públicos
criptograficamente seguros que podem ser distribuı́dos através de canais inseguros, permitindo
a distribuição de chaves públicas de forma confiável.
6
CHAPTER 2. STATE OF THE ART
O receptor de um certificado pode verificar a validade da assinatura utilizando para isso a
chave pública da autoridade de certificação. Caso a assinatura esteja correcta e caso se confie
na(s) autoridade(s) de certificação, pode-se confiar no certificado, na entidade que este certifica
e na chave pública dessa mesma entidade. Adicionalmente deverão ser efectuadas verificações
em “tempo real” do estado do certificado, através de CRL (25) ou OCSP (32) para verificar se
este ainda se encontra válido, se este se encontra num estado desconhecido, ou se foi revogado
(i.e. invalidado) pela autoridade de certificação.
Figura 2.1: Hierarquia de entidades de certificação (Certification Authorities) dos certificados
presentes no Cartão de Cidadão
2.2
Assinatura Electrónica Qualificada
A assinatura electrónica qualificada de documentos é realizada recorrendo a certificados
digitais qualificados, isto é, certificados digitais assinados por uma entidade certificadora credenciada como é o caso da SCEE (Sistema de Certificação Electrónica do Estado) (40), sendo
essa assinatura realizada através de um dispositivo seguro de criação de assinatura (e.g. SmartCard, USB Token).
2.3. CARTÃO DE CIDADÃO
7
Estes certificados digitais qualificados são emitidos por outras entidades certificadoras do
estado, como a Entidade Certificadora Comum do Estado, Cartão de Cidadão, Passaporte
Electrónico Português, Rede Nacional de Segurança Interna e a Entidade Certificadora do Ministério da Justiça. No âmbito deste trabalho serão utilizados os certificados qualificados emitidos
pela entidade certificadora do cartão de cidadão (6).
Em Portugal, segundo o Gabinete Nacional de Segurança (GNS)(23), neste momento existem
apenas duas entidades privadas (i.e. não integrantes do SCEE) habilitadas a emitir certificados
electrónicos qualificados: a Multicert (31) e a DigitalSign (14) (uma empresa sub-contratada da
British Telecommunications PLC). Ambas as entidades podem emitir certificados electrónicos
qualificados em nome de pessoas singulares ou colectivas.
A assinatura electrónica tem o valor legal conferido pela lei, nomeadamente no Decreto-Lei
n.o 290-D/99 (11), de 2 de Agosto, republicado pelo Decreto-Lei n.o 62/2003 (12), de 3 de Abril
e alterado pelos Decretos-Lei n.o 165/2004 (10), de 6 de Julho e 116-A/2006 (9), de 16 de Junho.
2.3
Cartão de Cidadão
O cartão de cidadão (ver Fig.2.2) é o novo documento de identificação dos cidadãos
portugueses. É um documento autêntico que contém os dados de cada cidadão relevantes para
a sua identificação e inclui o número de identificação civil, o número de identificação fiscal, o
número de utente dos serviços de saúde e o número de identificação da segurança social.
Figura 2.2: Modelo fı́sico do cartão de cidadão, frente e verso
8
CHAPTER 2. STATE OF THE ART
2.3.1
Funcionalidades Electrónicas
As funcionalidades electrónicas do cartão de cidadão permitem provar a identidade do
cidadão perante terceiros através de autenticação electrónica e autenticar de forma unı́voca
através de uma assinatura electrónica qualificada a sua qualidade de autor de um documento
electrónico. No âmbito deste trabalho serão usadas as funcionalidades electrónicas do cartão
de cidadão, nomeadamente a aplicação residente no cartão, responsável pela autenticação e
assinatura electrónica.
Figura 2.3: Aplicações residentes no chip EMV do cartão de cidadão
O cartão de cidadão (ver Fig.2.3) está dotado de um circuito integrado (i.e. chip EMV)
onde residem todos os dados do cartão (exceptuando a tradicional assinatura digitalizada), e as
aplicações electrónicas (ver Tab.2.1).
Aplicação
Descrição
IAS
Aplicação responsável pelas operações
de autenticação e assinatura electrónica
EMV-CAP
Aplicação responsável pela geração
de palavras-chave únicas por canais alternativos
Match-on-card
Aplicação responsável pela
verificação biométrica da impressão digital
Tabela 2.1: Aplicações electrónicas residentes no Cartão de Cidadão
2.3. CARTÃO DE CIDADÃO
2.3.2
9
Legislação
A Lei Portuguesa n.o 7/2007, de 5 de Fevereiro (30), cria o cartão de cidadão e rege a sua
emissão, substituição, utilização e cancelamento. Acerca da identificação electrónica e assinatura
electrónica destacam-se os seguintes artigos:
Artigo 4.o
Eficácia
O cartão de cidadão constitui tı́tulo bastante para provar a identidade do titular perante
quaisquer autoridades e entidades públicas ou privadas, sendo válido em todo o território nacional, sem prejuı́zo da eficácia extraterritorial reconhecida por normas comunitárias, por convenções internacionais e por normas emanadas dos órgãos competentes das organizações internacionais de que Portugal seja parte, quando tal se encontre estabelecido nos respectivos tratados
constitutivos.
Artigo 6.o
Estrutura e funcionalidades
1 - O cartão de cidadão é um documento de identificação múltipla que inclui uma zona
especı́fica destinada a leitura óptica e incorpora um circuito integrado.
2 - O cartão de cidadão permite ao respectivo titular:
a) Provar a sua identidade perante terceiros através da leitura de elementos visı́veis, coadjuvada pela leitura óptica de uma zona especı́fica;
b) Provar a sua identidade perante terceiros através de autenticação electrónica;
c) Autenticar de forma unı́voca através de uma assinatura electrónica qualificada a sua
qualidade de autor de um documento electrónico.
Artigo 18.o
Certificados digitais
1 - Com o cartão de cidadão é emitido um certificado para autenticação e um certificado
qualificado para assinatura electrónica qualificada necessários à sua utilização electrónica.
10
CHAPTER 2. STATE OF THE ART
2 - O certificado de autenticação é sempre activado no momento da entrega do cartão de
cidadão.
3 - O certificado qualificado para assinatura electrónica qualificada é de activação facultativa,
mas só pode ser activado e utilizado por cidadão com idade igual ou superior a 16 anos.
4 - Também não há lugar à activação do certificado qualificado para assinatura electrónica
qualificada se o titular do pedido de cartão de cidadão se encontrar interdito ou inabilitado.
5 - De cada vez que pretenda utilizar alguma das funcionalidades de comunicação electrónica
activadas no cartão de cidadão, o respectivo titular tem de inserir previamente o seu código
pessoal (PIN) no dispositivo de leitura pertinente.
6 - Os certificados são revogáveis a todo o tempo e, após revogação, a emissão de novos
certificados associados ao cartão de cidadão só é possı́vel com a respectiva substituição.
7 - Ao certificado para autenticação e ao certificado qualificado para assinatura electrónica
qualificada aplica-se o disposto no Decreto-Lei n.o 290-D/99, de 2 de Agosto, republicado pelo
Decreto-Lei n.o 62/2003, de 3 de Abril, e alterado pelos Decretos-Leis n.os 165/2004, de 6 de
Julho, e 116-A/2006, de 16 de Junho, estando aqueles certificados sujeitos às regras legais e
regulamentares relativas ao Sistema de Certificação Electrónica do Estado.
2.3. CARTÃO DE CIDADÃO
2.3.3
11
Certificados X.509 / PKIX
Os certificados X.509 versão 3 (ver Fig.2.4) são o standard de Public Key Infrasctructure
(PKI) mais utilizados. Encontram-se definidos pela ITU-X Recommendation X.509 (28), e
incluem mecanismos de extensão para aumentar a sua flexibilidade. PKIX é a PKI adoptada
na Internet (Housley et al., 2002) (25), adaptando os certificados X.509 v3 à Internet e
especificando as extensões apropriadas.
Figura 2.4: Perfil de um certificado X.509 versão 3
Os certificados presentes no cartão de cidadão são certificados X.509 versão 3, sendo
utilizado este mecanismo de extensão, por exemplo, para diferenciar o tipo de utilização da
chave pública presente (X509v3 Key Usage) . No certificado de Assinatura Digital Qualificada
do cartão de cidadão encontra-se presente a extensão Key Usage (ver Fig.2.5) que garante o
não-repúdio da assinatura.
12
CHAPTER 2. STATE OF THE ART
[Certificado de Assinatura Digital Qualificada]
X509v3 Key Usage : c r i t i c a l
Non R e p u d i a t i o n
[Certificado de Autenticação]
X509v3 Key Usage : c r i t i c a l
D i g i t a l S i g n a t u r e , Key Agreement
Figura 2.5: Extensão Key Usage dos certificados X.509 presentes no Cartão de Cidadão
“The nonRepudiation bit is asserted when the subject public key is used to verify digital
signatures used to provide a non-repudiation service which protects against the signing entity
falsely denying some action, excluding certificate or CRL signing. In the case of later conflict,
a reliable third party may determine the authenticity of the signed data.” (25)
No certificado de Autenticação do cartão de cidadão também se encontra presente a
extensão Key Usage (ver Fig.2.5) mas a sua utilização difere:
“The digitalSignature bit is asserted when the subject public key is used with a digital signature mechanism to support security services other than certificate signing (bit 5), or CRL signing
(bit 6). Digital signature mechanisms are often used for entity authentication and data origin
authentication with integrity.” (25)
Apesar de ambos os certificados poderem ser utilizados para a realização de uma assinatura
electrónica de documentos (uma vez que os seus mecanismos criptográficos são idênticos), apenas
o certificado de assinatura digital qualificada garante o não-repúdio, permitindo, segundo a Lei
Portuguesa (12), a realização de uma assinatura electrónica qualificada.
2.3.4
Certificado de Assinatura Digital Qualificada
A tı́tulo de exemplo ilustra-se na Fig.2.6 a Data Section de um certificado X.509 de Assinatura Digital Qualificada presente num Cartão de Cidadão de teste, onde se podem observar
2.3. CARTÃO DE CIDADÃO
13
diversos atributos, descritos de seguida.
No campo Version é indicada a versão do certificado X.509, neste caso a versão 3.
No campo Serial Number é indicado o número de série, que é um inteiro atribuı́do por uma
CA, devendo ser único para cada certificado emitido por essa CA. A combinação do Issuer e do
Serial Number identificam inequivocamente um certificado.
O campo Signature Algorithm indica o método de assinatura utilizado pela CA para assinar
o certificado. No campo Issuer encontra-se a entidade que emitiu e assinou o certificado.
A validade do certificado encontra-se no campo Validity, sendo especificada uma data de
ı́nicio de validade Not Before e uma data de térmito Not After. O espaço de tempo entre estas
duas datas define o perı́odo de validade do certificado, em que este pode ser utilizado para a
realização de assinaturas.
O campo Subject identifica a entidade associada à chave pública presente no campo Subject
Public Key, no caso do cartão de cidadão, a entidade associada à chave pública é um cidadão
português.
No campo X509v3 Extensions podem-se encontrar as extensões X.509, incluindo a extensão
Key Usage, que define o tipo de utilização da chave pública.
As polı́ticas de certificação encontram-se no campo X509v3 Certificate Policies, e incluem
hyperlinks para informação textual sobre as polı́ticas de certificação utilizadas.
A verificação em tempo real do estado actual de certificados através de CRL e OCSP é
realizada recorrendo aos campos X509v3 CRL Distribution Points e Authority Information
Access respectivamente.
14
CHAPTER 2. STATE OF THE ART
Certificate :
Data :
V e r s i o n : 3 ( 0 x2 )
S e r i a l Number :
5 2 : c0 : 9 0 : 8 4 : f 7 : 9 a : 4 5 : 7 e
S i g n a tu r e Algorithm :
sha1WithRSAEncryption
I s s u e r : CN=( T e s t e ) EC de A s s i n a t u r a
Digital
Q u a l i f i c a d a do C a r t ã o de Cidadão 0 0 0 2 , OU=
subECEstado , O=C a r t ã o de Cidadão , C=PT
Validity
Not B e f o r e : Mar 28 1 6 : 3 3 : 1 7 2008 GMT
Not A f t e r
: Mar 28 0 0 : 0 0 : 0 0 2013 GMT
S u b j e c t : CN=Paula A n d r e i a da C o n c e i ç ã o Á v i l a / s e r i a l N u m b e r=BI85111111 , GN=Paula Andreia , SN=da
C o n c e i ç ã o Á v i l a , OU=( T e s t e )
Assinatura
Q u a l i f i c a d a do Cidadão , OU=Cidadão P o r t u g uê s , O=
C a r t ã o de Cidadão , C=PT
Subject
P u b l i c Key I n f o :
P u b l i c Key A l g o r i t h m :
rsaEncryption
RSA P u b l i c Key :
bit )
(1024
Modulus ( 1 0 2 4
bit ) :
0 0 : d5 : 6 4 : 8 3 : 9 e : 9 5 : 2 7 : 9 6 : b2 : e a : 2 5 : 5 5 : 1 c : f a : a6 :
e 4 : 2 e : 5 3 : 4 d : c 3 : 7 5 : 6 3 : 8 8 : 5 9 : e 7 : 4 f : 9 c : 8 6 : a7 : a5 :
7 2 : 8 1 : 9 d : b8 : d4 : ad : e 6 : 3 0 : f e : 5 f : 6 6 : 9 a : 6 1 : 0 3 : 2 e :
0 5 : dd : 3 d : 8 9 : ed : c 1 : 8 9 : 2 a : e 4 : 4 6 : 9 5 : 3 7 : 3 b : 5 9 : 6 c :
c e : e 4 : 2 a : 3 6 : 6 2 : 0 0 : 5 c : b8 : 5 2 : c c : 0 7 : 5 e : 9 3 : 7 b : 6 8 :
7 0 : 5 9 : cd : b4 : d8 : 7 0 : 9 9 : 0 a : 2 a : 6 c : 2 b : 8 b : f a : 2 6 : 3 7 :
1 6 : 7 a : 1 3 : 6 5 : 7 f : a f : 4 1 : 1 e : 2 c : d7 : d0 : 1 4 : 1 f : 1 f : bc :
9 f : c 0 : 6 3 : aa : 7 3 : 3 a : 9 4 : da : 7 6 : 9 9 : 1 d : aa : f 2 : db : 6 5 :
0b : 2 b : 2 9 : c 7 : 1 d : 2 4 : 1 4 : a e : 5 b
Exponent :
6 5 5 3 7 ( 0 x10001 )
X509v3 e x t e n s i o n s :
X509v3 B a s i c
Constraints :
critical
CA: FALSE
X509v3 Key Usage :
critical
Non R e p u d i a t i o n
X509v3 S u b j e c t Key I d e n t i f i e r :
FF : CF :DC: 9 0 : D5 : 3 7 : 7 C : 3 3 : 2 A : BE : 5 7 : 7 3 : 3 E : 7 9 : F1 : 2 B : 7 F : F7 : BB: 4 1
X509v3 A u t h o r i t y Key I d e n t i f i e r :
k e y i d : 9 7 : 9 A : D5 : F7 : 5 7 : 8 3 : 4 5 : 8 7 : 1 7 : 7 4 : 3 8 : 4 C : 4 5 : 2 3 : 2 3 : 6 9 : D3 : 4 7 : 9 F : 0 4
X509v3 C e r t i f i c a t e
Policy :
Policies :
2.16.620.1.1.1.2.4.1.0.1.1
h t t p : / / p k i . t e s t e . c a r t a o d e c i d a d a o . p t / p u b l i c o / p o l i t i c a s / pc / c c s u b −
CPS :
e c c i d a d a o a s s i n a t u r a p c . html
Policy :
2.16.620.1.1.1.2.4.1.0.7
h t t p : / / p k i . t e s t e . c a r t a o d e c i d a d a o . p t / p u b l i c o / p o l i t i c a s / dpc / c c s u b −
CPS :
e c c i d a d a o a s s i n a t u r a d p c . html
Policy :
CPS :
2.16.620.1.1.1.2.10
h t t p : / /www. s c e e . gov . p t / p c e r t
User N o t i c e :
E x p l i c i t Text :
X509v3 CRL D i s t r i b u t i o n
Points :
URI : h t t p : / / p k i . t e s t e . c a r t a o d e c i d a d a o . p t / p u b l i c o / l r c / c c s u b −
ec cidadao assinatura crl0002 . crl
2.5.29.46:
0 f0d . b . ‘ . ˆ http : / / pki . t e s t e . c a r t a o d e c i d a d a o . pt / p u b l i c o / l r c / cc sub −
ec cidadao assinatura crl0002 delta . crl
Authority
Information
Access :
OCSP − URI : h t t p : / / o c s p . a s c . t e s t e . c a r t a o d e c i d a d a o . p t / p u b l i c o / o c s p
Figura 2.6: Data Section do certificado X.509 versão 3 de Assinatura Digital Qualificada de um
Cartão de Cidadão de teste
2.4. XML
2.4
15
XML
Desde a sua normalização pelo W3C, a linguagem XML (Extensible Markup Language) (22)
tem vindo a ser adoptada por um grande número de organizações como formato base para os
documentos e mensagens utilizados nas aplicações. No âmbito deste trabalho será dado ênfase
às assinaturas digitais em formato XML.
2.4.1
XML Signatures
XML Signatures (também apelidadas de XMLDsig, XML-DSig, XML-Sig) (43) são assinaturas digitais definidas em formato XML (22) (ver Fig.2.7). A sua especificação inclui regras de
sintaxe e de processamento para a criação e representação de assinaturas digitais.
As assinaturas digitais XML fornecem serviços de integridade, autenticação da mensagem
e/ou autenticação do assinante para qualquer tipo de documentos electrónicos (i.e.
data
objects, conjunto de bytes). Estas são aplicadas ao data object através de uma indirecção, isto
é, é realizado um resumo do data object, o valor resultante é colocado num elemento (com
informação adicional) e esse elemento é novamente resumido e assinado criptograficamente.
<S i g n a t u r e ID?>
<S i g n e d I n f o >
<C a n o n i c a l i z a t i o n M e t h o d/>
<SignatureMethod/>
(< R e f e r e n c e URI? >
(<Transforms >)?
<DigestMethod>
<D i g e s t V a l u e >
</R e f e r e n c e >)+
</ S i g n e d I n f o >
<S i g n a t u r e V a l u e >
(<KeyInfo >)?
(< O b j e c t ID?>)∗
</S i g n a t u r e >
Figura 2.7: Estrutura de uma assinatura XML
16
CHAPTER 2. STATE OF THE ART
O documento electrónico pode estar dentro da própria assinatura ou noutro local. Enveloped
ou enveloping signatures têm o documento dentro do mesmo documento XML que a assinatura.
Detached signatures contêm uma referência externa para o documento que assina, usualmente
URI (Uniform Resource Identifier ) (3).
2.4.2
XAdES
XAdES (XML Advanced Electronic Signatures) (20) é uma especificação que estende as
XML Signatures utilizando os seus mecanismos de extensão, através da utilização do elemento
XML <ds:Object>. A assinatura XAdES continua a ser uma XML Signature válida. Esta
especificação surgiu da necessidade de ir ao encontro da Directiva Europeia 1999/03/EC (15),
de forma a preencher um número de requisitos como a validade de longo termo da assinatura,
o não repúdio, e a inclusão na assinatura de outra informação qualificante (e.g. data e hora
da assinatura), de forma a que as assinaturas geradas possam ser consideradas assinaturas
electrónicas avançadas.
A especificação XAdES define várias polı́ticas de assinatura de forma a que possa ser estabelecida consistência técnica aquando da validação das assinaturas. Quando uma assinatura
é validada, esta polı́tica tem que estar especificada pelo assinante ou pelos dados a assinar, de
modo a que o resultado obtido na validação da assinatura electrónica seja consistente. A utilização de polı́ticas de assinatura compreensivas é necessária para a obtenção de consistência na
validação da assinatura, devendo ser utilizadas por ambas as partes, isto é, por quem assina e
por quem valida. A especificação do conteúdo das polı́ticas de assinatura encontram-se definida
no relatório da ETSI TR 102 038 (18).
Na especificação XAdES são definidos vários perfis de assinatura electrónica como Basic
Electronic Signature (XAdES-BES), Explicit Policy based Electronic Signature (XAdES-EPES)
e Electronic Signature with Validation Data (XAdES-T e XAdES-C), que satisfazem diferentes
requisitos. Para uma assinatura estar de acordo com a especificação XAdES, ela tem que usar
um destes perfis.
2.4. XML
2.4.2.1
17
XAdES-BES (Basic)
Para que uma assinatura XML seja considerada uma assinatura XAdES-BES esta tem que
incluir a data na qual o assinante terá supostamente criado a assinatura, uma referência não
ambı́gua para o certificado do assinante (uma vez que é possı́vel um assinante utilizar o mesmo
par de chaves pública e privada em diferentes certificados), e opcionalmente uma referência para
a polı́tica de assinatura.
2.4.2.2
XAdES-T (Time Stamped)
Uma assinatura de longo prazo implica que, uma vez sendo a assinatura considerada válida,
ela tem que permanecer válida durante meses ou anos. Este perfil de assinatura contempla
a adição de um carimbo temporal a toda a assinatura, produzido por uma entidade externa
Time Stamp Authority (TSA) (1), produzindo deste modo uma prova não repudiável de que a
assinatura foi realizada antes daquela data, e atestando a veracidade temporal da assinatura.
Este perfil permite também que uma assinatura permaneça válida no caso em que a segurança
criptográfica da assinatura inicial seja comprometida.
2.4.2.3
XAdES-C (Complete)
Este perfil de assinatura contem referências para toda a informação necessária à validação da
assinatura. Inclui referências para os diversos certificados necessários para validar a assinatura,
de modo a que a cadeia de certificação possa ser validada, e referências para a informação do
estado dos certificados (CRL, OCSP) de modo a que possa ser verificado o seu estado num
determinado momento.
2.4.2.4
XAdES-X (Extended)
É semelhante à combinação do perfil XAdES-C com o perfil XAdES-T, adicionando um
carimbo temporal a toda a assinatura, ou apenas às referências para a validação da assinatura,
de modo a provar que o estado da cadeia de certificação e da informação de revogação se
encontrava válido no momento da assinatura. A assinatura poderá assim permanecer válida
18
CHAPTER 2. STATE OF THE ART
mesmo que a segurança de uma entidade de certificação emissora de um certificado presente na
assinatura seja comprometida.
2.4.2.5
XAdES-X-L (Extended Long term)
No futuro poderá não ser possı́vel obter a informação de validação referenciada no perfil XAdES-X, em parte devido à não perenidade dos URIs (3). Neste perfil de assinatura é
adicionada à assinatura toda a informação referenciada pelo perfil XAdES-X.
2.4.2.6
XAdES-A (Archival)
Este perfil de assinatura tem como objectivo o arquivamento da assinatura a longo prazo,
protegendo-a contra algoritmos de segurança que se tornem fracos no futuro e contra pares de
chaves criptográficas cuja segurança tenha sido comprometida. Este método passa pela adição
de carimbos temporais sucessivos a toda a informação incluı́da no perfil XAdES-X-L sempre
que seja necessário, de modo a proteger carimbos temporais anteriores.
2.4.3
Outras Propriedades
Todos este perfis de assinatura suportam contra-assinaturas, suportam a inclusão do papel do indivı́duo assinante na organização, uma descrição do documento, e o compromisso do
assinante perante o documento, respectivamente através dos elementos CounterSignature, SignerRole, DataObjectFormat e CommitmentTypeIndication.
O elemento CounterSignature permite a criação de uma assinatura sobre outra assinatura,
sendo esta funcionalidade particularmente útil para a realização de um serviço de notariado, em
que a entidade que realiza esse serviço atesta as informações que constam na assinatura inicial.
Desta forma é possı́vel atestar a veracidade de propriedades como o papel do assinante (SignerRole) dentro da organização, e a suposta data de criação da assinatura. Esta funcionalidade
também poderá ser utilizada na produção de uma assinatura que contenha vários assinantes.
O elemento SignerRole permite ao indivı́duo assinante dizer em que qualidade(s) de assinante (devido ao facto de um indivı́duo poder desempenhar diferentes cargos numa organização)
2.4. XML
19
é que realiza a assinatura do documento. Isto é realizado através da utilização do elemento
ClaimedRoles.
O elemento DataObjectFormat permite descrever o conteúdo do documento a assinar, através
dos sub-elementos Description MimeType e Encoding, onde são especificados respectivamente
comentários sobre o documento a assinar, o tipo de ficheiro e o tipo de codificação.
O elemento CommitmentTypeIndication permite descrever textualmente e de forma inteligı́vel o compromisso do assinante perante o documento assinado.
Como se pode observar na Fig.2.9, os elementos SignerRole, DataObjectFormat e CommitmentTypeIndication são sub-elementos das SignedProperties, pelo que são também assinados
quando é realizada a assinatura do documento.
Figura 2.8: Utilização do elemento CounterSignature XAdES
As assinaturas XAdES suportam também outras propriedades qualificantes da assinatura,
como por exemplo o local geográfico onde a assinatura foi criada através do elemento SignatureProductionPlace. Esta propriedade assinada é especialmente interessante quando uma
organização ou entidade possui diferentes localizações geográficas e deseja diferenciar e atestar
o local onde as assinaturas foram criadas.
20
CHAPTER 2. STATE OF THE ART
Figura 2.9: Estrutura das assinaturas XAdES
2.5. CADES
2.5
21
CAdES
CMS Advanced Electronic Signatures (CAdES) (19) é um conjunto de extensões da Cryptographic Message Syntax (CMS) (26) de forma a contemplar as propriedades da assinatura
electrónica avançada, de acordo com a Directiva Europeia 1999/03/EC (15). Estas extensões
definem diferentes perfis de assinaturas, similares aos perfis XAdES. À semelhança das assinaturas XAdES, as assinaturas CAdES também contemplam Timestamping e outros mecanismos
de forma a proteger a validade das assinaturas a longo prazo.
2.6
PAdES
PDF Advanced Electronic Signatures (PAdES) (21) é uma proposta de extensão dos documentos no formato PDF v1.7 definido no ISO 32000-1, de forma a contemplar as propriedades
da assinatura electrónica avançada, e à semelhança do CAdES e XAdES, estar de acordo com a
Directiva Europeia 1999/03/EC (15) . O formato PDF é um ISO International Standard desde
Julho de 2008 tendo sido delegado pela Adobe Systems Incorporated à International Organization for Standartization. À semelhança das assinaturas CAdES e XAdES propõe diferentes
perfis de assinatura. Esta proposta define perfis de inclusão de assinaturas CAdES e XAdES
nos documentos PDF, em deterimento das assinaturas PKCS#7 utilizadas. Esta proposta de
extensão irá ser sugerida para integrar o próximo PDF standard, o ISO 32000-2.
2.7
Trusted timestamping
O trusted timestamping é um processo seguro que permite provar a temporalidade de um
documento, isto é, a existência de certos dados antes de uma determinada data.
“À medida que os certificados são revogados devido a perda ou perda de validade, as assinaturas feitas não podem de repente ficar inválidas.” (36). De forma a garantir a validade a
longo prazo das assinaturas, é necessário recorrer a um serviço de timestamping confiável.
Este processo é realizado por uma Time Stamp Authority (TSA) que é responsável pela
geração de carimbos temporais através do Time Stamp Protocol (1). O processo de produção de
carimbos temporais é relativamente simples, a entidade que deseja atestar a temporalidade de
22
CHAPTER 2. STATE OF THE ART
um documento realiza uma operação de hashing sobre o documento obtendo um digest, envia
o conjunto de bytes do digest para a TSA, a TSA adiciona a esse conjunto de bytes a data
actual (data e hora), e assina o resultado, devolvendo à entidade o resultado da assinatura e o
certificado da TSA num Time Stamp Token. Desta forma o conteúdo do documento nunca é
enviado para a TSA, salvaguardando a confidencialidade do conteúdo.
Após a adição de carimbo temporal ninguém, incluindo o autor do documento, poderá
alterá-lo sem comprometer a integridade do carimbo temporal.
3
Proposta
This is my answer to the gap between ideas and action - I will write it out.
– Hortense Calisher
3.1
Problemas
Nesta secção descrevem-se os problemas que o sistema de assinatura electrónica proposto
pretende resolver.
3.1.1
Formato das assinaturas
Os sistemas de assinatura electrónica tipicamente utilizados, são sistemas (i.e. software)
proprietários dependentes do sistema operativo e do tipo de documento, cuja especificação tem
um mecanismo especı́fico de inclusão da assinatura e que difere em cada formato de documento.
Este facto impõe uma forte limitação tanto no processo de validação da assinatura como no
seu processo produção, pois na maioria dos casos não estão disponı́veis mecanismos de contraassinatura e/ou de Timestamping. Nestas situações o receptor da assinatura terá que dispor
dos mesmos meios (i.e. mesmo software) que o assinante de forma a que a possa validar, não
sendo este processo transparente e confiável, na medida em que os formatos dos documentos são
proprietários.
Esta validação é tipicamente realizada no sistema do utilizador, pelo que o processo de
validação poderá ser maliciosamente subvertido, apresentando um estado erróneo de validade
da assinatura, induzindo o utilizador em erro.
O formato da assinatura produzida é frequentemente dependente do tipo de documento e
do software que se utiliza, isto é, não existindo na especificação do formato de um determinado
24
CHAPTER 3. PROPOSTA
tipo de documento um mecanismo de assinatura, como por exemplo um ficheiro de áudio, vı́deo
ou imagem, a assinatura electrónica deste tipo de documentos fica bastante limitada.
3.1.2
Temporalidade da assinatura
Mesmo estando na posse de um certificado revogado ou expirado, é possı́vel realizar uma
assinatura forjada temporalmente, realizada no espaço de tempo em que o certificado se encontrava válido, subvertendo desta forma os mecanismos de validação da assinatura. Isto deve-se
ao facto de a assinatura ser gerada usando o relógio do sistema operativo da máquina local, cujo
valor pode ser manipulado.
3.1.3
Assinaturas numa organização
Tipicamente uma organização não assina documentos, estes são assinados por um indivı́duo
pertencente à organização, de forma a que este tenha a responsabilidade inerente à sua concordância.
Embora o nome do assinante seja importante, o cargo do assinante dentro de uma empresa
ou organização é tão ou mais importante. Alguns contratos poderão apenas ser válidos se o
assinante tiver um determinado cargo dentro da organização (e.g. Director de Compras), ou se
o assinante tiver autoridade para assinar determinado tipo de documento.
3.1.4
Compromisso da assinatura
Outro problema reflecte-se com a manifestação explı́cita do compromisso do assinante relativo ao documento que assina quando este não se encontra evidenciado no próprio documento.
Uma assinatura deverá ser passı́vel de inclusão do compromisso a que o indivı́duo se compromete ao assinar o documento (e.g. aprovo o conteúdo do documento, tomei conhecimento, etc...),
para que em caso de disputa não haja dúvidas da intenção do assinante.
3.1.5
Validade a longo prazo
Um algoritmo criptográfico considerado seguro no presente, pode no futuro vir a ser comprometido através do aumento da capacidade de computação ou da descoberta de pontos de falha
3.2. OBJECTIVOS
25
no algoritmo que permitam obter colisões num espaço mais pequeno. Este ponto é particularmente crı́tico nas funções de resumo (cryptographic hash functions), uma vez que as assinaturas
(e.g. RSA) são realizadas sobre o resultado da função de resumo, o que permite a troca do
documento por um diferente, mas manipulado, para que a função de resumo produza o mesmo
resultado. Neste momento duas das funções de resumo bastante utilizadas são consideradas
inseguras, como é o caso do MD5 (42) e do SHA-1 (5).
A geração de pares de chaves criptográficas poderá também comprometer as assinaturas,
por exemplo, um erro de inicialização do gerador de números aleatórios levou a que as chaves
geradas entre Setembro de 2006 e Maio de 2008 no OpenSSL do sistema operativo Debian Linux
(e derivados) a produzir um número limitado e previsı́vel de pares de chaves, independentemente
do tamanho das chaves geradas. (7)
De forma a proteger as assinaturas contra o enfraquecimento dos algoritmos utilizados na
sua produção, as assinaturas deverão ser contra-assinadas periodicamente com algoritmos mais
fortes, de forma a proteger no futuro a sua validade.
3.2
Objectivos
A proposta apresentada pretende propor um sistema de assinatura de documentos
electrónicos independentemente do seu formato, sejam eles documentos de texto, imagem, vı́deo,
logs, executáveis, etc... Isto é, todos os conjuntos de bytes deverão ser passı́veis de uma assinatura
electrónica qualificada, de forma transparente, num formato aberto, bem definido e normalizado,
como é o caso do formato XAdES (20).
A utilização de uma assinatura electrónica qualificada, deve-se ao facto de ser necessário
garantir o valor probatório dos documentos assinados electronicamente de acordo com a Lei
Portuguesa (11; 12; 10) e com a Directiva Europeia (15) para as assinaturas electrónicas, de
forma a que as assinaturas produzidas tenham validade legal em todos os Estados Membros da
União Europeia.
Um dos objectivos deste sistema de assinatura de documentos electrónicos, é a criação de
uma assinatura electrónica que inclua nas propriedades qualificantes o cargo na organização e o
compromisso relativo ao documento do indivı́duo que assina o documento, atestando-o através
26
CHAPTER 3. PROPOSTA
da aposição de uma contra-assinatura da organização sobre a assinatura do indivı́duo e das
propriedades qualificantes.
Um outro objectivo deste sistema é atestar a veracidade temporal das assinaturas realizadas,
recorrendo a mecanismos seguros de certificação temporal. Tem também como objectivo assegurar a validade das assinaturas por longos perı́odos de tempo, mesmo que a segurança das chaves
criptográficas seja mais tarde comprometida.
Os requisitos a que este sistema deverá obedecer são os seguintes:
• Fornecer ao utilizador um mecanismo simples de criação de assinaturas electrónicas, necessitando apenas de um web browser, e utilizando mecanismos seguros que possam ser
mantidos sob o seu controlo.
• Permitir ao utilizador realizar uma assinatura electrónica qualificada de um documento
electrónico, produzindo um documento num formato bem definido e normalizado que contenha o documento electrónico assinado e a assinatura, assim como permitir ao utilizador
a sua validação (local e remota) e verificação WYSIWYS (What you see is what you sign)
do conteúdo assinado antes da sua submissão ou partilha electrónica.
• No contexto de uma organização, permitir ao utilizador a submissão electrónica do documento assinado num sistema de notariado da organização, que atestará as propriedades
qualificantes reclamadas pelo indivı́duo, contra-assinando a assinatura inicial e as propriedades qualificantes, produzindo uma assinatura que possa ser facilmente validada por
terceiros.
• Permitir à organização a validação temporal, o armazenamento, e a protecção a longo
prazo da veracidade das assinaturas, recorrendo a carimbos temporais electrónicos (Trusted
Timestamping).
Um outro objectivo foi a implementação do sistema descrito recorrendo apenas a tecnologia
normalizada e a software Open Source, de modo a minimizar os seus custos e a obter um
elevado grau de portabilidade entre diferente arquitecturas/sistemas operativos, facilitando e
transparecendo todo o processo de produção e validação das assinaturas.
3.3. ARQUITECTURA
3.3
27
Arquitectura
“Para a realização de uma assinatura electrónica qualificada é necessário que a assinatura
identifique de forma unı́voca o titular como autor do documento, que a aposição da assinatura ao
documento dependa da vontade do titular, que a assinatura seja criada com meios que o titular
pode manter sob o seu controlo exclusivo, que a sua conexão com o documento permita detectar
toda e qualquer alteração superveniente do conteúdo deste, e que a realização da assinatura seja
baseada num certificado qualificado sendo realizada através de um dispositivo seguro de criação
de assinatura” (12)
Figura 3.1: Componentes de um serviço de assinatura electrónica qualificada
Na solução proposta (Fig. 3.1), o indivı́duo titular de um certificado qualificado para
assinatura electrónica qualificada de documentos, presente no seu Cartão de Cidadão, utiliza-o
de forma a assinar electronicamente um documento mediante a sua vontade, utilizando o seu
PIN pessoal da assinatura digital. Este processo é realizado numa aplicação segura de criação
de assinatura que se executa no computador do indivı́duo, onde este escolhe qual o documento
a assinar, podendo visualizar o seu conteúdo (WYSIWYS), escolhendo a qualidade (i.e. o
28
CHAPTER 3. PROPOSTA
cargo do indivı́duo na organização) em que deseja assinar o documento e outras propriedades
qualificantes, assinando-o (i.e. criando uma assinatura XAdES). Opcionalmente poderá incluir
na assinatura um carimbo temporal, de forma a atestar a temporalidade da mesma. Todo
este processo é realizado no componente assinatura electrónica qualificada (Fig.3.2). Deverá
opcionalmente, validar pelos seus meios o valor da assinatura do documento e do conteúdo
assinado, e/ou poderá efectuar uma validação on-line. De seguida deverá submeter a assinatura
para o sistema de notariado da organização, de forma a que esta possa atestar as suas qualidades.
Figura 3.2: Arquitectura da solução proposta
O sistema de notariado da organização (Fig.3.2) aceita documentos assinados electronicamente no formato XAdES por indivı́duos pertencentes à organização, e efectua a validação da
assinatura e das suas propriedades, atestando a sua veracidade através da realização de uma
3.3. ARQUITECTURA
29
contra-assinatura. Este sistema é responsável pela validação da assinatura, do certificado utilizado na assinatura e da sua hierarquia de certificação, pela validação temporal da assinatura
validando a data na qual o assinante diz ter criado a assinatura, e pela validação das propriedades qualificantes reclamadas pelo assinante, como o cargo do indivı́duo na organização e
o seu compromisso relativamente ao documento assinado.
Este sistema de notariado recorre a um sistema de certificação temporal, uma TSA (1),
de forma a acrescentar à assinatura um carimbo temporal, isto é, uma prova temporal não
repudiável. A produção da contra-assinatura da organização poderá ser realizado através de um
processo manual, dependendo dos requisitos existentes para o tipo de assinatura em questão.
O sistema de arquivamento tem como função arquivar os documentos e as suas assinaturas,
protegendo-as a longo prazo contra algoritmos de segurança que no futuro se tornem fracos e
contra pares de chaves criptográficas cuja segurança tenha sido comprometida. Este processo
realiza-se através da adição de sucessivos carimbos temporais à assinatura, periodicamente ou
sempre que seja necessário, de modo a proteger carimbos temporais anteriores. À semelhança
do sistema de notariado recorre também a um sistema de certificação temporal.
Uma assinatura electrónica de um documento no contexto organização poderá ser considerada válida numa das seguintes situações, dependendo dos requisitos organizacionais:
• Quando o documento se encontra assinado por um indivı́duo através de uma assinatura
digital qualificada, e quando existe uma contra-assinatura da organização que ateste as propriedades qualificantes da assinatura inicial. Esta contra-assinatura da organização deverá
ser certificada por uma entidade externa confiável a terceiros que efectuem a validação, ou
deverá ser estabelecida uma relação de confiança com a organização e consequentemente
com o certificado utilizado pela mesma na realização da contra-assinatura. A aposição de
pelo menos um carimbo temporal não repudiável é essencial para garantir a temporalidade
da assinatura.
• Quando o documento se encontra assinado por um indivı́duo através de uma assinatura
digital qualificada, e quando existe na assinatura um carimbo temporal não repudiável
(e da confiança da organização) que ateste a data de criação da assinatura. Em caso de
litı́gio entre o assinante e a organização, as disputas sobre a validade ou não da assinatura
terá que ser feita à posteriori, verificando se na data em que foi realizada a assinatura o
30
CHAPTER 3. PROPOSTA
assinante teria poderes para tal. Este tipo de assinatura simplifica o processo de assinatura
na medida em que dispensa um serviço de notariado. É particularmente útil para assinaturas de documentos utilizados apenas dentro da organização, isto é, não partilhados com
terceiros (i.e. entidades externas).
4
Implementação
Programming today is a race between software engineers striving to build bigger and better
idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the
Universe is winning.
– Rick Cook
4.1
Protótipo
O sistema de assinatura electrónica qualificada de documentos descrito no capı́tulo anterior
foi implementado, dando origem a um protótipo funcional baptizado de AEQ Docs. A utilização
deste sistema requere apenas o uso de um web browser com suporte para Java SE 6 (29) e da
Aplicação do Cartão de Cidadão instalada (i.e. middleware do cartão de cidadão) (6), sendo
compatı́vel com os sistemas operativos Windows, MacOSX e Linux. Necessita também de um
leitor de SmartCards compatı́vel com a norma ISO 7816.
4.2
AEQ Docs
A implementação do sistema proposto foi realizada utilizando vários módulos standalone,
sendo cada um deles responsável por uma parte das funcionalidades. Todos estes módulos, à
excepção da Interface Web foram implementados na linguagem de programação Java.
4.2.1
XAdESSigner
O módulo XAdESSigner é responsável pela produção de assinaturas electrónicas qualificadas no formato XAdES-BES, isto é, uma assinatura que inclui a data na qual o assinante
terá supostamente criado a assinatura e uma referência não ambı́gua para o certificado do assinante. Inclui ainda outras propriedades qualificantes opcionais, como o cargo do assinante na
32
CHAPTER 4. IMPLEMENTAÇÃO
organização, o compromisso do assinante relativamente ao documento assinado e uma descrição
do documento assinado. Todas estas propriedades qualificantes são assinadas.
Este módulo utiliza um sub-módulo chamado CartaoCidadaoPKCS11, que é responsável
pela identificação do sistema operativo em utilização, efectuando a ligação entre a biblioteca
PKCS#11 (37) do cartão de cidadão e o XAdESSigner, permitindo a utilização das funcionalidades criptográficas do cartão de cidadão.
O XAdESSigner pode ser invocado na linha de comandos, e recebe como argumentos
o documento a assinar FileToSign, o nome do documento na assinatura XMLFilename, o
cargo/qualidade do indivı́duo Role, uma descrição do ficheiro FileDescription e o compromisso
relativo ao documento assinado Commitment. O resultado da execução do XAdESSigner é a
produção de uma assinatura XML com o nome do documento mas com a extensão .xml.sig, que
contém o documento e a assinatura XAdES.
$ j a v a XAdESSigner F i l e T o S i g n XMLFilename Role F i l e D e s c r i p t i o n Commitment
Figura 4.1: Invocação do XAdESSigner através da linha de comandos
As assinaturas realizadas por este módulo são do tipo Enveloped, isto é, a assinatura
encontra-se dentro do elemento que contém o documento a assinar. Na Fig.4.2 pode-se observar
um exemplo de uma assinatura gerada pelo XAdESSigner. O elemento de raiz <SignedFile>
contém dois sub-elementos <FileContent> e <ds:Signature>. No elemento <FileContent>
encontra-se o conteúdo do documento assinado, codificado em Base64 (39), sendo o nome do
documento definido pelo atributo Id. No elemento <ds:Signature> encontra-se a assinatura
XMLDsig, com as referências para o conteúdo assinado e o respectivo valor da assinatura.
A
assinatura
XMLDsig
produzida
tem
4
sub-elementos
<ds:SignedInfo>,
<ds:SignatureValue>, <ds:KeyInfo> e <ds:Object>.
O elemento <ds:SignedInfo> representa a informação que está assinada. Contém o método
de canonização utilizado <ds:CanonicalizationMethod>, isto é, o algoritmo utilizado para
estruturar a informação, numa forma comum e reconhecida.
Este método é de extrema
importância, pois define o algoritmo aplicado ao elemento <ds:SignedInfo> antes da realização
dos cálculos da assinatura, podendo definir regras para a transformação dos terminadores
4.2. AEQ DOCS
33
de linha (i.e. CRLF), para a normalização do mapa de caracteres, para a remoção ou não
de comentários, ou outra qualquer manipulação que possa ser necessária, de forma a que o
elemento <ds:SignedInfo> seja processado independentemente da implementação, de forma a
que possa haver consistência no processo de validação da assinatura.
<?xml v e r s i o n =”1.0” e n c o d i n g =”UTF−8” s t a n d a l o n e =”no”?>
<S i g n e d F i l e >
<F i l e C o n t e n t I d=”exemplo . t x t ”>SXN0byDDqSB1bSBmaWNoZWlybyBkZSBleGVtcGxvCg==</F i l e C o n t e n t >
<d s : S i g n a t u r e xmlns : d s=”h t t p : / /www. w3 . o r g / 2 0 0 0 / 0 9 / x m l d s i g#” I d=” i d S i g n a t u r e ”>
<d s : S i g n e d I n f o >
<d s : C a n o n i c a l i z a t i o n M e t h o d A l g o r i t h m=”h t t p : / /www. w3 . o r g /TR/ 2 0 0 1 /REC−xml−c14n −20010315#
WithComments”/>
<d s : S i g n a t u r e M e t h o d A l g o r i t h m=”h t t p : / /www. w3 . o r g / 2 0 0 0 / 0 9 / x m l d s i g#r s a −s h a 1 ”/>
<d s : R e f e r e n c e URI=”#exemplo . t x t ”>
<d s : T r a n s f o r m s>
<d s : Transform A l g o r i t h m=”h t t p : / /www. w3 . o r g /TR/ 2 0 0 1 /REC−xml−c14n −20010315#WithComments”/>
</d s : T r a n s f o r m s>
<d s : D i g e s t M e t h o d A l g o r i t h m=”h t t p : / /www. w3 . o r g / 2 0 0 1 / 0 4 / xmlenc#s h a 2 5 6 ”/>
<d s : D i g e s t V a l u e > . . . < / d s : D i g e s t V a l u e >
</d s : R e f e r e n c e >
<d s : R e f e r e n c e URI=”#i d S i g n e d P r o p e r t i e s ”>
<d s : T r a n s f o r m s>
<d s : Transform A l g o r i t h m=”h t t p : / /www. w3 . o r g /TR/ 2 0 0 1 /REC−xml−c14n −20010315#WithComments”/>
</d s : T r a n s f o r m s>
<d s : D i g e s t M e t h o d A l g o r i t h m=”h t t p : / /www. w3 . o r g / 2 0 0 1 / 0 4 / xmlenc#s h a 2 5 6 ”/>
<d s : D i g e s t V a l u e > . . . < / d s : D i g e s t V a l u e >
</d s : R e f e r e n c e >
</d s : S i g n e d I n f o >
<d s : S i g n a t u r e V a l u e I d=” i d S i g n a t u r e V a l u e ” >... </ d s : S i g n a t u r e V a l u e >
<d s : K eyInfo>
<d s : KeyValue>
<d s : RSAKeyValue>
<d s : Modulus > . . . < / d s : Modulus>
<d s : Exponent>AQAB</d s : Exponent>
</d s : RSAKeyValue>
</d s : KeyValue>
<d s : X509Data>
<d s : X509SubjectName>C=PT, O=C a r t ã o de Cidadão , OU=Cidadão P o r t u g uê s , OU=( T e s t e )
Assinatura
Q u a l i f i c a d a do Cidadão , SURNAME=da C o n c e i ç ã o Á v i l a , GIVENNAME=Paula Andreia , SERIALNUMBER=
BI85111111 , CN=Paula A n d r e i a da C o n c e i ç ã o Á v i l a </d s : X509SubjectName>
</d s : X509Data>
<d s : X509Data>
<d s : X 5 0 9 C e r t i f i c a t e > . . . < / d s : X 5 0 9 C e r t i f i c a t e >
</d s : X509Data>
</d s : KeyInfo>
<d s : O b j e c t I d=” i d O b j e c t ”>
...
</d s : O b j e c t>
</d s : S i g n a t u r e >
</ S i g n e d F i l e >
Figura 4.2: Assinatura XMLDsig gerada pelo XAdESSigner
As referências ao conteúdo que se deseja assinar encontram-se nos sub-elementos
34
CHAPTER 4. IMPLEMENTAÇÃO
<ds:Reference>.
Cada um destes elementos contém uma referência para o conteúdo
que deseja assinar, o digest algorithm utilizado (e.g.
SHA-256) e o digest value re-
sultante da aplicação do digest algorithm ao conteúdo referenciado após a aplicação do
método de transformação especificado <ds:Transform>, cujo objectivo é o mesmo do
<ds:CanonicalizationMethod>. Na Fig.4.2 existem duas referências, uma para o ficheiro a
assinar <ds:Reference URI=”#exemplo.txt”> e outra para as <SignedProperties> da extensão
XAdES (Fig.4.3) <ds:Reference URI=”#idSignedProperties”>.
O valor da assinatura codificado em Base64 encontra-se no elemento <ds:SignatureValue>,
sendo resultante da aplicação do método de assinatura <ds:SignatureMethod> ao elemento
<ds:SignedInfo> após a aplicação do método de canonização.
O elemento <ds:KeyInfo> contém a informação sobre a chave pública no elemento
<ds:KeyValue>, de forma a que o receptor da assinatura a possa validar. Inclui também o
sub-elemento <ds:X509Data> onde é incluı́do certificado X.509 no formato DER (Distinguished
Encoding Rules) codificado em Base64 no sub-elemento <ds:X509Certificate>. Contém também
o subject name do certificado utilizado no sub-elemento <ds:X509SubjectName>.
A extensão XAdES encontra-se no elemento <ds:Object Id=”idObject”>, mais precisamente
no sub-elemento <QualifyingProperties> representado na Fig.4.3. Este elemento engloba todas
as propriedades qualificantes da assinatura, e contêm uma referência para a assinatura a que se
refere no atributo Target=”idSignature”, ou seja, a XMLDsig da Fig.4.2.
O elemento <SignedProperties Id=”idSignedProperties”> é o elemento referenciado pela
XMLDsig e engloba todo o conteúdo a ser digested e assinado. Como sub-elementos tem as
propriedades qualificantes da assinatura no elemento <SignedSignatureProperties> e as propriedades do objecto assinado no elemento <SignedDataObjectProperties>.
No elemento <SignedSignatureProperties> encontram-se os sub-elementos <SigningTime>
e <SigningCertificate>, necessários para que a assinatura seja considerada um assinatura
electrónica qualificada, e para que tenha o valor respectivo valor legal.
O elemento
<SigningTime> inclui a data em que o assinante supostamente realizou a assinatura, esta data
é obtida a partir do relógio do sistema operativo máquina do utilizador.
O elemento <SigningCertificate> contém as referências não ambı́guas para o certificado
utilizado na realização da assinatura, contendo o digest do certificado (presente no elemento
4.2. AEQ DOCS
35
<ds:X509Certificate> da XMLDsig) no sub-elemento <CertDigest>. Outras referências ao
certificado encontram-se no elemento <IssuerSerial>, nomeadamante o nome do emissor do
certificado no sub-elemento <ds:X509IssuerName>, e o número de série do certificado no
sub-elemento <ds:X509SerialNumber>. Estas referências são necessárias para impossibilitar
(ou dificultar) a substituição do certificado presente na XMLDSig, uma vez que o elemento
<ds:X509Certificate> não é uma propriedade assinada, podendo o certificado ser substituı́do
por outro que tenha a mesma chave pública.
36
CHAPTER 4. IMPLEMENTAÇÃO
<d s : O b j e c t I d=” i d O b j e c t ”>
<Q u a l i f y i n g P r o p e r t i e s xmlns=”h t t p : / / u r i . e t s i . o r g / 0 1 9 0 3 / v1 . 3 . 2 # ” T a r g e t=” i d S i g n a t u r e ”>
<S i g n e d P r o p e r t i e s
I d=” i d S i g n e d P r o p e r t i e s ”>
<S i g n e d S i g n a t u r e P r o p e r t i e s >
<S i g n i n g T i m e >2009−10−20T02 : 5 8 : 3 0 + 0 1 : 0 0 < / S i g n i n g T i m e>
<S i g n i n g C e r t i f i c a t e >
<Cert>
<C e r t D i g e s t >
<d s : D i g e s t M e t h o d A l g o r i t h m=”h t t p : / /www. w3 . o r g / 2 0 0 0 / 0 9 / x m l d s i g#s h a 2 5 6 ”/>
<d s : D i g e s t V a l u e >+6GAx9PsKhKhBf2Cr0qU5HLpapZ6z9juUZyyhNFDJ9M=</d s : D i g e s t V a l u e >
</ C e r t D i g e s t >
<I s s u e r S e r i a l >
<d s : X509IssuerName>C=PT, O=C a r t ã o de Cidadão , OU=subECEstado , CN=( T e s t e ) EC de
Assinatura
Digital
Q u a l i f i c a d a do C a r t ã o de Cidadão 0002</ ds : X509IssuerName>
<d s : X509SerialNumber >5962924807402702206 </ d s : X509SerialNumber>
</ I s s u e r S e r i a l >
</Cert>
</ S i g n i n g C e r t i f i c a t e >
<S i g n e r R o l e >
<C l a i m e d R o l e s >
<ClaimedRole>D i r e c t o r de Compras</ClaimedRole>
</C l a i m e d R o l e s >
</ S i g n e r R o l e >
</ S i g n e d S i g n a t u r e P r o p e r t i e s >
<S i g n e d D a t a O b j e c t P r o p e r t i e s >
<DataObjectFormat O b j e c t R e f e r e n c e=”#exemplo . t x t ”>
<D e s c r i p t i o n >F i c h e i r o de exemplo </ D e s c r i p t i o n >
<MimeType>t e x t / p l a i n </MimeType>
<Encoding>b a s e 6 4 </Encoding>
</DataObjectFormat>
<CommitmentTypeIndication>
<CommitmentTypeId>
< I d e n t i f i e r />
</CommitmentTypeId>
<A l l S i g n e d D a t a O b j e c t s />
<C o m m i t m e n t T y p e Q u a l i f i e r s>
<CommitmentTypeQualifier>Aprovo o c o n t e ú d o do documento a s s i n a d o </
CommitmentTypeQualifier>
</C o m m i t m e n t T y p e Q u a l i f i e r s>
</CommitmentTypeIndication>
</ S i g n e d D a t a O b j e c t P r o p e r t i e s >
</ S i g n e d P r o p e r t i e s >
</ Q u a l i f y i n g P r o p e r t i e s >
</d s : O b j e c t>
Figura 4.3: Extensão XAdES-BES da assinatura XMLDsig gerada pelo XAdESSigner
O cargo do indivı́duo na organização (ou a sua qualidade de assinante) encontra-se
no elemento <SignerRole>, nomeadamente numa lista de ClaimedRoles, no sub-elemento
<ClaimedRole>. No exemplo da Fig.4.3 a assinatura é realizada na qualidade de Director
de Compras.
A descrição do documento assinado encontra-se no elemento <SignedDataObjectProperties>,
4.2. AEQ DOCS
37
onde existe uma referência para o documento assinado no sub-elemento <DataObjectFormat
ObjectReference=”#exemplo.txt”>,
uma
descrição
do
documento
no
sub-elemento
<Description>, o mime type (4) do documento no sub-elemento <MimeType> e o seu
método de codificação no sub-elemento <Encoding>.
O compromisso do assinante perante o documento assinado encontra-se definido
no
elemento
<CommitmentTypeIndication>,
<CommitmentTypeQualifier>.
mais
precisamente
no
sub-elemento
A existência do elemento <AllSignedDataObjects/> implica
que todos os data objects assinados partilhem o mesmo compromisso.
4.2.2
XAdESValidator
O módulo XAdESValidator é responsável pela validação das assinaturas em diversos aspectos. À semelhança do XAdESSigner pode ser invocado através da linha de comandos (Fig.4.4).
As validações que o XAdESValidator pode efectuar são a combinação de 4 validações possı́veis:
• Schema - Valida o documento XML fornecido mediante o esquema XSD XAdES 1.3.2
que define as regras a que a assinatura tem que obdecer para que seja considerada bem
definida.
• Assinatura - Percorre o documento XML à procura de qualquer tipo de assinatura XMLDsig com ou sem a extensão XAdES e procede à sua validação assim como à validação de
todas as referências e digests.
• Revogação - Verifica on-line e em tempo-real através da validação OCSP o estado do
certificado na suposta data de produção da assinatura, de forma a identificar certificados
revogados ou em estado inválido.
• Validade - Verifica se na suposta data de produção da assinatura o certificado utilizado
para realizar a assinatura se encontrava válido, isto é, dentro do seu perı́odo de validade.
38
CHAPTER 4. IMPLEMENTAÇÃO
$ j a v a XAdESValidator XMLtovalidate . xml o p t i o n s
Options :
−xsd
V a l i d a t e s i g n a t u r e s a g a i n s t XAdES schema d e f i n i t i o n
−s i g
V a l i d a t e XML s i g n a t u r e s
−r e v
Check f o r r e v o c a t e d c e r t i f i c a t e s w h i l e v a l i d a t i n g s i g n a t u r e s
−v a l
Check f o r c e r t i f i c a t e v a l i d i t y on t h e SigningTime
Figura 4.4: Invocação do XAdESValidator através da linha de comandos
A execução do XAdESValidator devolve como resultado SUCCESS no caso em que todas
as validações passadas como argumentos tenham sido realizadas correctamente, ou ERROR no
caso em que uma das validações tenha falhado. No sistema AEQ Docs na validação de qualquer
assinatura são utilizadas todas as validações descritas.
A implementação do XAdESValidator utiliza a biblioteca Apache XML Security 1.4.3 (2)
para validar as assinaturas XML. Utiliza também uma Java Keystore (cc-keystore) que contém
os certificados de toda a hierarquia de certificação do cartão de cidadão (incluindo a hierarquia
de testes), de forma a que se possa validar toda a hierarquia de certificação de um certificado.
4.2.3
XAdESSignatureTimeStamper
O módulo XAdESSignatureTimeStamper é responsável pela adição de um carimbo temporal a uma assinatura XAdES já existente. Este carimbo temporal é produzido por uma TSA(1)
via HTTP. À semelhança dos outros módulos também pode ser invocado na linha de comandos
(Fig.4.5). Recebe como argumentos o ficheiro de assinatura ou de contra-assinatura ao qual
deverá adicionar o carimbo temporal.
$ j a v a XAdESSignatureTimeStamper XAdESSignatureToTimeStamp . xml
TimeStampAuthorityURL
Figura 4.5: Invocação do XAdESSignatureTimeStamper através da linha de comandos
O resultado da execução é a adição de um carimbo temporal à assinatura XAdES-BES
transformando-a numa assinatura do tipo XAdES-T (Fig.4.6).
Este carimbo temporal é
4.2. AEQ DOCS
39
produzido sobre o digest SHA-1 do elemento <ds:SignatureValue> que é enviado para a TSA. O
Time Stamp Token obtido na resposta da TSA (no formato ASN.1 DER-encoded ) é codificado
em Base64 e é guardado no elemento <EncapsulatedTimeStamp>.
<U n s i g n e d P r o p e r t i e s >
<U n s i g n e d S i g n a t u r e P r o p e r t i e s >
<SignatureTimeStamp>
<EncapsulatedTimeStamp>MIIDRgYJK . . .
5 SVUlgZk=</EncapsulatedTimeStamp>
</SignatureTimeStamp>
</ U n s i g n e d S i g n a t u r e P r o p e r t i e s >
</ U n s i g n e d P r o p e r t i e s >
Figura 4.6: Extensão XAdES-T gerada pelo XAdESSignatureTimeStamper
A execução do XAdESSignatureTimeStamper devolve como resultado SUCCESS no caso
em que obteu e incluiu correctamente um carimbo temporal na assinatura e devolve ERROR
caso contrário.
Este processo de time stamping pode ser realizado o número de vezes que for necessário, o
que resulta na adição de sucessivos carimbos temporais. Desta forma a assinatura contém uma
prova não repudiável de que a assinatura foi realizada antes da data atestada pela TSA.
4.2.4
XAdESCounterSigner
O módulo XAdESCounterSigner é responsável por realizar a contra-assinatura da organização sobre a assinatura qualificada do indivı́duo. Este módulo pode ser invocado na linha de
comandos, e recebe como argumentos a assinatura XML, o ficheiro PKCS#12 (38) que contém
o par de chaves e o certificado da organização correspondente, a password para aceder ao
ficheiro PKCS#12 e a password para aceder à chave privada (Fig.4.7). O resultado da execução
do XAdESCounterSigner é a produção de uma assinatura XML com o nome do ficheiro da
assinatura mas com a extensão .xml.cssig, que contém o documento, a assinatura XAdES e a
contra-assinatura da organização.
$ j a v a XAdESCounterSigner XAdESSignatureToCounterSign . xml p k c s 1 2 F i l e
pkcs12Password pkcs12KeyPassword
Figura 4.7: Invocação do XAdESCounterSigner através da linha de comandos
40
CHAPTER 4. IMPLEMENTAÇÃO
A contra-assinatura produzida (Fig.4.8) é uma XMLDsig, e inclui uma referência <Reference
URI=”#idSignatureValue”> para o elemento <ds:SignatureValue Id=”idSignatureValue”> da
assinatura inicial, assinando-o. Inclui também o elemento <X509Data> onde é incluı́do o certificado utilizado para realizar a contra-assinatura.
A execução do XAdESCounterSigner devolve como resultado SUCCESS no caso em que
realizou correctamente a contra-assinatura e devolve ERROR caso contrário.
<U n s i g n e d P r o p e r t i e s >
<U n s i g n e d S i g n a t u r e P r o p e r t i e s >
<C o u n t e r S i g n a t u r e >
<S i g n a t u r e xmlns=”h t t p : / /www. w3 . o r g / 2 0 0 0 / 0 9 / x m l d s i g#”>
<S i g n e d I n f o >
<C a n o n i c a l i z a t i o n M e t h o d A l g o r i t h m=”h t t p : / /www. w3 . o r g /TR/ 2 0 0 1 /REC−xml−c14n −20010315#
WithComments”/>
<S i g n a t u r e M e t h o d A l g o r i t h m=”h t t p : / /www. w3 . o r g / 2 0 0 0 / 0 9 / x m l d s i g#r s a −s h a 1 ”/>
<R e f e r e n c e URI=”#i d S i g n a t u r e V a l u e ”>
<D i g e s t M e t h o d A l g o r i t h m=”h t t p : / /www. w3 . o r g / 2 0 0 1 / 0 4 / xmlenc#s h a 2 5 6 ”/>
<D i g e s t V a l u e >6JOM/ 1 9 8 8 zLHl4HnxLhoB+OVhQqMpcI5fCZWBJg/HnY=</D i g e s t V a l u e >
</ R e f e r e n c e >
</ S i g n e d I n f o >
<S i g n a t u r e V a l u e >VGzZ4p
. . . Aaw==</S i g n a t u r e V a l u e >
<KeyInf o>
<KeyValue>
<RSAKeyValue>
<Modulus>y6S4
. . . W/Q==</Modulus>
<Exponent>AQAB</Exponent>
</RSAKeyValue>
</KeyValue>
<X509Data>
<X509SubjectName>CN=N o t a r i o , OU=A s s i n a t u r a
Electronica
Q u a l i f i c a d a , O=I n s t i t u t o
S u p e r i o r T e c n i c o , L=L i s b o n , ST=L i s b o n , C=PT</X509SubjectName>
</X509Data>
<X509Data>
<X 5 0 9 C e r t i f i c a t e >MIIEpzCCA4+ . . .
9PmlpmA==</X 5 0 9 C e r t i f i c a t e >
</X509Data>
</KeyI nfo>
</ S i g n a t u r e >
</C o u n t e r S i g n a t u r e >
</ U n s i g n e d S i g n a t u r e P r o p e r t i e s >
</ U n s i g n e d P r o p e r t i e s >
Figura 4.8: Invocação do XAdESCounterSigner através da linha de comandos
4.2.5
Assinatura Electrónica Qualificada - Java Applet
A java applet Assinatura Electrónica Qualificada, como o seu nome indica, permite realizar
assinaturas electrónicas qualificadas no formato XAdES, utilizando o cartão de cidadão. Utiliza
4.2. AEQ DOCS
41
o módulo XAdESSigner e o módulo XAdESSignatureTimeStamper de forma a produzir as
assinaturas. A inclusão de carimbos temporais é opcional, de modo a que as assinaturas possam
ser realizadas offline. As assinaturas produzidas são portanto do tipo XAdES-BES ou do tipo
XAdES-T se tiverem pelo menos um carimbo temporal.
Figura 4.9: Assinatura Electrónica Qualificada - Java Applet
Esta aplicação permite a realização de uma assinatura que inclua as propriedades qualificantes. Para a utilizar bastará inserir o cartão de cidadão no leitor, escolher o documento a
assinar, escolher o nome que se deseja atribuir ao documento dentro da assinatura, elaborar
uma pequena descrição do documento, digitar o cargo/qualidade em que desejamos assinar o
documento, digitar o nosso compromisso relativamente ao documento assinado e escolher assinar. De seguida é-nos pedido o PIN de Assinatura do cartão de cidadão. Após a sua inserção
temos uma assinatura digital qualificada no formato XAdES, com o mesmo nome do ficheiro do
documento assinado, mas com a extensão .xml.sig.
42
CHAPTER 4. IMPLEMENTAÇÃO
4.2.6
Web Application
A Web Application AEQ Docs integra todos os módulos descritos, implementando a arquitectura proposta no capı́tulo anterior. Foi implementada utlizando HTML/CSS na camada de
apresentação e PHP na camada lógica, utlizando uma base de dados MySQL de forma a garantir
a persistência das assinaturas do serviço de notariado.
Esta aplicação permite a realização de assinaturas electrónicas qualificadas na secção
Assinatura (Fig.4.10), onde é utilizada a applet Assinatura Electrónica Qualificada para realizar
a assinatura de documentos.
Figura 4.10: AEQ Docs - Assinatura
4.2. AEQ DOCS
43
Na secção Validador (Fig.4.11) é possı́vel realizar a validação das assinaturas produzidas,
isto é, após o envio da assinatura é executado do lado do servidor o XAdESValidator validando
ou não a assinatura submetida. Pode adicionalmente efectuar-se o download do documento
contido na assinatura, de modo a que se possa verificar o conteúdo do documento assinado.
Figura 4.11: AEQ Docs - Validador
O serviço de notariado encontra-se disponı́vel na secção Notariado (Fig.4.12). Este serviço
permite a submissão de assinaturas para o serviço de notariado da organização.
Após a
submissão de uma assinatura é possı́vel atestar as propriedades qualificantes e realizar o serviço
de notariado da organização, produzindo uma contra-assinatura. Adicionalmente este serviço
permite a adição de carimbos temporais às contra-assinaturas já realizadas (Fig.4.13).
44
CHAPTER 4. IMPLEMENTAÇÃO
Figura 4.12: AEQ Docs - Notariado antes da realização da contra-assinatura
Figura 4.13: AEQ Docs - Notariado após a realização da contra-assinatura
5
Discussão
The ideal engineer is a composite ... He is not a scientist, he is not a mathematician, he
is not a sociologist or a writer; but he may use the knowledge and techniques of any or all
of these disciplines in solving engineering problems.
– N. W. Dougherty
5.1
CAdES, PAdES ou XAdES?
O formato de assinatura PAdES apenas permite assinar documentos no formato PDF, o
que vai contra o objectivo de se poder realizar uma assinatura electrónica qualificada sobre um
qualquer conjunto de bytes. Apesar dos documentos do tipo PDF proliferarem no dia a dia das
organizações, este não será o único tipo de documentos que será desejável assinar. Além do facto
de ser um formato de assinatura bastante recente e ainda pouco suportado.
A utilização do formato das assinaturas XAdES, ao invés do formato CAdES deveu-se não
só ao facto da implementação ter um esforço bastante mais elevado, mas também ao facto das
assinaturas CAdES terem uma extensibilidade e modificabilidade bastante reduzida. Se surgir
a necessidade de adicionar novas propriedades a uma assinatura XAdES, uma assinatura neste
formato pode ser facilmente modificada, migrando o seu perfil de assinatura por exemplo de
XAdES-BES para XAdES-A. Em CAdES apesar de também ser possı́vel alterar as propriedades
não assinadas modificando o perfil de assinatura, esta seria bastante mais complexa. Além disso
as assinaturas no formato CAdES não são human readable.
As assinaturas XAdES continuam a ser assinaturas XMLDsig, podendo ser validadas em
qualquer validador compatı́vel com XMLDsig, não sendo necessário um suporte especı́fico para
as extensões da norma XAdES.
46
CHAPTER 5. DISCUSSÃO
5.2
Implementação
Na implementação do protótipo descrito no capı́tulo anterior, não foi utilizada qualquer
biblioteca Java de XAdES , devido ao facto das bibiliotecas open source existentes estarem
num estado de desenvolvimento prematuro, estando incompletas/incorrectas, ou estando orientadas para diferentes requisitos de assinatura utilizando polı́ticas de assinatura especı́ficas.
Uma análise das bibliotecas XAdES existentes pode ser encontrada em (24), o panorama actual é o mesmo. No entanto existem boas bibliotecas XAdES proprietárias, mas são comerciais e como tal têm custos de licenciamento associados. De forma a evitar a utilização
de bibliotecas proprietárias, foi implementado um sub-set da especificação XAdES de forma
a satisfazer os requisitos da assinatura que se desejou produzir. Por exemplo, o elemento
<SignedDataObjectProperties> apesar de opcional foi implementado de forma a incluir uma
descrição do conteúdo do ficheiro assinado e o seu mime type, de forma a facilitar a extracção
do documento do ficheiro de assinatura.
No protótipo implementado, o sistema de arquivamento encontra-se integrado com o sistema
de notariado. Numa utilização prática isto poderá não ser desejável, pelo que deverão ser
devidamente separados. Este sistema de arquivamento, poderá realizar periodicamente (i.e.
uma ou duas vezes por ano) a adição de carimbos temporais às assinaturas já realizadas, ou
uma contra-assinatura de forma a proteger a validade da assinatura a longo prazo. Deverá
também estender o perfil das assinaturas realizadas, idealmente até ao perfil XAdES-A.
5.3
Segurança
As assinaturas em si realizadas pelo sistema implementado são RSA-SHA1, isto é, uma
assinatura RSA sobre o resumo SHA1 do elemento <ds:SignedInfo>. Uma vez que o algoritmo
SHA1 tem falhas conhecidas (5), deveria ter sido utilizado um método de assinatura RSASHA256 ou superior, mas este método não se encontra disponı́vel no Java 6 apesar da sua
previsão de inclusão futura (41). De forma a contornar este problema poderá utilizar-se a
biblioteca Apache XML Security (2) na produção das assinaturas, que suporta este e outros
métodos de assinatura mais fortes. Todos os restantes digests das assinaturas são realizados
com SHA256 podendo ser facilmente alterados para uma função de resumo mais forte, como
SHA512.
5.4. INTEGRAÇÃO
47
Para uma maior segurança na realização das assinaturas com o cartão de cidadão, deverá ser
utilizado um leitor de SmartCards com pinpad de forma a evitar a inserção do PIN com teclado,
uma vez que o PIN pode ser maliciosamente interceptado e utilizado para realizar assinaturas
sem o consentimento expresso do utilizador, bastando que o cartão de cidadão se encontre no
leitor.
5.4
Integração
O sistema proposto oferece uma boa facilidade de integração, podendo (com ligeiras modificações) ser facilmente integrado com repositórios digitais de documentos, com sistemas de
gestão documental, ou com outros sistemas.
O protótipo implementado não contempla autenticação nem autorização, numa utilização
prática deveria utilizar um sistema de autenticação e realizar a autorização, de forma a distinguir
quais os utilizadores que têm autorização para submeter documentos assinados no serviço de
notariado, quais os utilizadores que podem realizar o serviço de notariado etc... Adicionalmente
deverá ser mantido um registo (i.e. log) de todas as operações realizadas e o seu autor.
Idealmente, numa utilização prática deste sistema, o serviço de notariado deverá ser realizado
recorrendo também a certificados electrónicos qualificados emitidos para entidades colectivas, de
forma não só às contra-assinaturas terem o valor legal equiparado às assinaturas realizadas com
o cartão de cidadão, mas também para promover a confiança de entidades externas que venham
a ter que atestar a validade de assinaturas produzidas pela organização.
5.5
Objectivos atingidos
O protótipo do sistema implementado, AEQ Docs, atingiu todos os objectivos propostos e
satizfez os requisitos enunciados, resultando num sistema de assinatura qualificada de documentos com aplicabilidade numa organização. Os seus componentes, nomeadamente a Java applet
Assinatura Electrónica Qualificada fornece também a possibilidade de realizar assinaturas fora
de um contexto organizacional (i.e. pessoal), realizando assinaturas electrónicas qualificadas de
qualquer tipo de documento utilizando o cartão de cidadão, tendo essas assinaturas valor legal
em todos os estados membros da União Europeia.
48
CHAPTER 5. DISCUSSÃO
6
Conclusões
Good ideas are not adopted automatically. They must be driven into practice with courageous patience.
– Hyman Rickover
6.1
Conclusões
De um modo geral, esta dissertação identificou e abordou um problema actual, a gestão
de documentos assinados electronicamente no contexto organizacional e alguns dos problemas
adjacentes a este tipo de gestão documental. A análise dos problemas identificados, permitiu
conceber um sistema de assinatura electrónica de documentos, que tivesse em conta os problemas
identificados e apresentasse soluções para os mesmos. Desta forma foi possı́vel propor um sistema seguro de assinatura electrónica de documentos, cujas assinaturas garantam propriedades
fundamentais como o não repúdio, a autenticidade, a validade a longo prazo e a sua veracidade
temporal. A utilização do recente criado cartão de cidadão permitiu a utilização de certificados
digitais qualificados na produção das assinaturas, o que confere às assinaturas validade legal em
todos os Estados Membros da União Europeia.
Concluı́-se que o formato XAdES, apesar de ser ainda pouco adoptado, reúne todas as
condições necessárias à produção de assinaturas electrónicas que englobem um diversificado
leque de propriedades qualificantes. A extensibilidade do XAdES é o seu ponto forte, podendo
uma assinatura com o perfil XAdES-BES ser actualizada até ao perfil XAdES-A, uma vez que
as propriedades que mudam o perfil da assinatura são propriedades não assinadas. Isto permite
a protecção da validade das assinaturas a longo prazo, quer pela adição de sucessivos carimbos
temporais e/ou de contra-assinaturas, e simplifica o processo de validação através da inclusão
dos certificados da cadeia de certificação e das respostas CRL e OCSP, permitindo uma validação
off-line confiável.
50
CHAPTER 6. CONCLUSÕES
Apesar do RSA ser um algoritmo seguro para a realização de criptografia de chave pública,
é necessário ter especial cuidado com as funções de resumo utilizadas (e.g. SHA1) e com a
sua segurança. Isto deve-se ao facto de apenas o resumo do documento ser assinado, e não
o documento em si, o que pode levar à criação de um documento diferente mas que produza
um resumo igual. Este facto iria permitir a substituição do documento por um diferente, sem
comprometer a validade da assinatura, o que não é de todo desejável.
Concluı́-se que o sistema proposto é exequı́vel, o que foi demonstrado através da implementação do protótipo AEQ Docs, mas que para ser colocado em produção necessita de algumas
modificações, por exemplo, para contemplar a autenticação e a autorização dos seus utilizadores,
e adicionalmente manter um registo seguro de todas as acções realizadas pelo sistema e qual o
seu autor. Este sistema tenta transparecer todo o processo de produção e validação de assinaturas no formato XAdES, de forma a eliminar o conceito de black box existente no processo de
assinatura de documentos, permitindo uma melhor compreensão de todo este processo.
6.2
Trabalho Futuro
Implementação Open Source em Java de uma biblioteca XAdES, de forma a promover a
norma e de forma a contribuir para a sua maior aceitação. As bibliotecas XAdES em Java
existentes neste momento são ou proprietárias ou deficitárias como analisado em (24).
Criação de um serviço de TSA confiável ao Instituto Superior Técnico, através da utilização
de software open-source. O projecto OpenTSA (34) foi recentemente integrado no projecto
OpenSSL (33) a partir da versão 1.0, que à data de redação deste documento se encontrava na
versão 1.0.0 Beta 3. O projecto OpenTSA inclui um módulo de TimeStamp para o Apache Web
Server, de forma a que possam ser pedidos carimbos temporais através dos protocolos HTTP e
HTTPS.
Implementar e integrar no Instituto Superior Técnico um sistema de assinatura electrónica
qualificada, mediante os requisitos organizacionais existentes, de forma a resolver a necessidade
de gestão de documentos assinados electronicamente. Disponibilizar este sistema (ou parte dele)
a toda a sua comunidade, de forma a que se possam produzir assinaturas electrónicas qualificadas no formato XAdES com o cartão de cidadão, idealmente utilizando a TSA descrita no
ponto anterior de forma a garantir a temporalidade das assinaturas. Integrar este sistema com
6.2. TRABALHO FUTURO
51
repositórios digitais de documentos (e.g. DSpace (16)), produzindo assinaturas sobre documentos contidos no repositório, isto é, realizando assinaturas por referência. Integrar este sistema
com outros, como é o caso do LDAP, de forma a obter os cargos do assinante na organização,
ou outras propriedades qualificantes necessárias.
52
CHAPTER 6. CONCLUSÕES
Bibliography
[1] Adams, et al. , RFC 3161 - Internet X.509 Public Key Infrastructure Time-Stamp Protocol
(TSP), 2001.
[2] Apache XML Security [On-Line] http://santuario.apache.org/.
[3] Berners-Lee, et al. , RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax, January 2005, IETF.
[4] Borenstein, N., and Freed, N., Multipurpose Internet Mail Extensions (MIME) Part One:
Format of Internet Message Bodies, RFC 2045, November 1996.
[5] Cameron McDonald and Philip Hawkes and Josef Pieprzyk, Differential Path for SHA-1
with complexity O(252 ), 2009.
[6] Cartão de Cidadão, [Online] http://www.cartaodecidadao.pt.
[7] Debian Security Advisory 1571, [On-Line] http://www.debian.org/security/2008/dsa-1571.
[8] Declaração de Práticas de Certificação da ECEE (Entidade Certificadora Comum do Estado), [Online] http://www.scee.gov.pt/ECEE/pt/pcerti/.
[9] Decreto-Lei n. 116-A/2006, 16 de Junho, Cria o Sistema de Certificação Electrónica do
Estado, Diário da República - I Série-A.
[10] Decreto-Lei n. 165/2004, 6 de Julho, Compatibilização do Decreto-Lei n. 62/2003 com o
quadro legal comunitário para as assinaturas electrónicas, Diário da República - I SérieA.
[11] Decreto-Lei n. 290-D/99, 2 de Agosto, Regime jurı́dico dos documentos electrónicos e da
assinatura electrónica, Diário da República - I Série-A.
[12] Decreto-Lei n. 62/2003, 3 de Abril, Compatibilização do Decreto-Lei n. 290-/99 com a
Directiva 1999/93/CE, Diário da República - I Série-A.
[13] Dieter Gollmann, Computer Security 2nd ed., pp. 224-229, John Wiley & Sons(2006).
[14] DigitalSign - Certificadora Digital, Lda. [Online] http://www.digitalsign.pt.
53
54
CHAPTER 6. CONCLUSÕES
[15] Directive 1999/93/CE of the European Parliament and the Council of 13 December 1999
on a Community Framework for Electronic Signatures.
[16] DSpace [On-Line] http://www.dspace.org.
[17] Ellison, et al. , RFC 2693 - SPKI Certificate Theory, September 1999, IETF.
[18] ETSI TR 102 038 v1.1.1 (2002-04), TC Security - Electronic Signatures and Infrastructures
(ESI); XML format for signature policies.
[19] ETSI TS 101 733 V1.7.4 (2008-07), Electronic Signatures and Infrastructures (ESI); CMS
Advanced Electronic Signatures (CAdES).
[20] ETSI TS 101 903 V1.3.2 (2006-03), XML Advanced Electronic Signatures (XAdES).
[21] ETSI TS 102 778-1 V1.1.1 (2009-07), Electronic Signatures and Infrastructures (ESI) PDF
Advanced Electronic Signature Profiles (PAdES).
[22] Extensible Markup Language (XML) 1.0 (Fourth Edition) W3C Recommendation 16 August 2006, edited in place 29 September 2006.
[23] Gabinete Nacional de Segurança (GNS) [Online] http://www.gns.gov.pt.
[24] Guedes, Nuno - Implementação de Solução de Assinaturas Digitais - Dissertação para
obtenção do Grau de Mestre em Engenharia Informática e de Computadores, Abril
2008.
[25] Housley, et. al. , RFC 3280 - Internet X.509 Public Key Infrastructure Certificate and
Certificate Revocation List (CRL) Profile, April 2002, IETF.
[26] Housley, R. RFC3852 - Cryptographic Message Syntax (CMS).
[27] IEEE 1363-2000: Standard Specifications For Public Key Cryptography.
[28] ITU-X Recommendation X.509 : Information technology - Open Systems Interconnection
- The Directory: Public-key and attribute certificate frameworks.
[29] Java Platform, Standard Edition 6 [On-Line] http://java.sun.com/javase/6/.
[30] Lei n. 7/2007, 5 de Fevereiro, Cria o cartão de cidadão e rege a sua emissão e utilização,
Diário da República n.25 - Série I.
[31] MULTICERT
-
Serviços
https://www.multicert.com.
de
Certificação
Electrónica,
S.A.
[Online]
6.2. TRABALHO FUTURO
55
[32] Myers, et al. , RFC 2560 - X.509 Internet Public Key Infrastructure Online Certificate
Status Protocol - OCSP, June 1999, IETF.
[33] OpenSSL Project [On-Line] http://www.openssl.org/.
[34] OpenTSA [On-Line] http://www.opentsa.org/.
[35] Polı́tica de Certificados da SCEE (Sistema de Certificação Electrónica do Estado), [Online]
http://www.scee.gov.pt/ECEE/pt/pcerti/.
[36] Ribeiro, Carlos - Slides da disciplina Algoritmos e Aplicações de Segurança - Gestão de
Chaves Secretas.
[37] RSA Laboratories, PKCS #11 v2.30: Cryptographic Token Interface Standard, April 2009
.
[38] RSA Laboratories, PKCS #12 v1.0: Personal Information Exchange Syntax, June 1999 .
[39] S. Josefsson, RFC 4648 - The Base16, Base32, and Base64 Data Encodings, October 2006,
IETF.
[40] Sistema de Certificação Electrónica do Estado, [Online] http://www.scee.gov.pt.
[41] Using
stronger
XML
Signature
Algorithms
in
JDK
7
[On-Line]
http://blogs.sun.com/mullan/entry/using stronger xml signature algorithms.
[42] Xiaoyun Wang and Hongbo Yu, How to Break MD5 and Other Hash Functions, Shandong
University 2005.
[43] XML Signature Syntax and Processing (Second Edition), W3C Recommendation, 10 June
2008.
Download

Assinatura Electrónica Qualificada