FELIPE CARLOS WERLANG, LUCAS GONÇALVES MARTINS
SISTEMA GERENCIADOR DE CERTIFICADOS OFFLINE
Florianópolis
2009
FELIPE CARLOS WERLANG, LUCAS GONÇALVES MARTINS
SISTEMA GERENCIADOR DE CERTIFICADOS OFFLINE
Melhorias em um Software de Gestão de Ciclo
de Vida de Certificados, para Autoridades Certificadoras Offline
Orientador: Cristian Thiago Moecke
Co-orientador: Dr. Ricardo Felipe Custódio
U NIVERSIDADE F EDERAL DE S ANTA C ATARINA
Florianópolis
2009
Monografia de Conclusão de Curso apresentada para a obtenção de grau de
Bacharel em Ciências da Computação pela Universidade Federal de Santa Catarina.
Tı́tulo: Sistema Gerenciador de Certificados Offline
Autores: Felipe Carlos Werlang, Lucas Gonçalves Martins
Orientador:
Cristian Thiago Moecke (UFSC)
Coorientador e Professor Responsável:
Prof. Dr. Ricardo Felipe Custódio (Orientador) (UFSC)
Banca Avaliadora:
Msc. Marcelo Carlomagno Carlos
Jonathan Gehard Kohler
DEDICATÓRIA
Dedico este trabalho à minha Famı́lia
etc.
AGRADECIMENTO
Agradecimentos...
SUMÁRIO
Lista de Figuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Lista de Tabelas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.1
CONTEXTUALIZAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
OBJETIVOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2.1
GERAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2.2
ESPECÍFICOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.3
METODOLOGIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.4
CONTEÚDO DO DOCUMENTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
FUNDAMENTAÇÃO TEÓRICA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
CRIPTOGRAFIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
CRIPTOGRAFIA ASSIMÉTRICA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
INTRAESTRUTURA DE CHAVES PÚBLICAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2.1
CERTIFICADOS DIGITAIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2.2
AUTORIDADES CERTIFICADORAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2.3
REQUISIÇÕES DE CERTIFICADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.2.4
LISTA DE CERTIFICADOS REVOGADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
ICP-BRASIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2
2.1
2.1.1
2.2
2.3
2.3.1
ESTRUTURA DA ICP-BRASIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.3.2
AUTORIDADES REGISTRADORAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.3.3
LEGISLAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
SISTEMA GERENCIADOR DE CERTIFICADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.1
FUNCIONALIDADES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.2
PROCESSO DE DESENVOLVIMENTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.2.1
DOCUMENTAÇÃO DE DESENVOLVEDOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.2.2
PLANO DE TESTES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
RAMIFICAÇÃO DO SGC EM YWAPA E YWYRA . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
MELHORIAS NO SGC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
4.1
ROTINA DE ATUALIZAÇÃO DE BASES DE DADOS . . . . . . . . . . . . . . . . . . . . . . . . . .
9
4.2
IMPLEMENTAÇÃO DE NOVOS ALGORITMOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
4.2.1
SHA-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
4.2.2
ECDSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3
3.3
4
5
5.1
CONSIDERAÇÕES FINAIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
TRABALHOS FUTUROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
LISTA DE FIGURAS
LISTA DE TABELAS
RESUMO
resumo...
Palavras-chave: Criptografia, ICP, ICP-Brasil, Certificado Digital, x509, SGC, Autoridade
Certificadora, João de Barro.
ABSTRACT
abstract...
Keywords: Cryptography, PKI, ICP-Brasil, Digital Certificate, x509, Certification Authorithy.
1
1
1.1
INTRODUÇÃO
CONTEXTUALIZAÇÃO
A Medida Provisória 2.200-2, de agosto de 2001, instituiu a ICP-Brasil, a Infraestrutura de
Chaves Públicas brasileira. Objetivando alavancar o uso de certificação digital no governo e
sociedade, como forma de agregar segurança e confiabilidade as mais diversas transações em
meio digital.
“Art. 1¯o Fica instituı́da a Infra-Estrutura de Chaves Públicas Brasileira - ICP-Brasil,
para garantir a autenticidade, a integridade e a validade jurı́dica de documentos em forma
eletrônica, das aplicações de suporte e das aplicações habilitadas que utilizem certificados
digitais, bem como a realização de transações eletrônicas seguras.”
(...)
“Art. 10¯o Consideram-se documentos públicos ou particulares, para todos os fins legais,
os documentos eletrônicos de que trata esta Medida Provisória.
§ 1¯o As declarações constantes dos documentos em forma eletrônica produzidos com a utilização de processo de certificação disponibilizado pela ICPBrasil presumem-se verdadeiros em relação aos signatários, na forma do art.
131¯o da Lei n¯o 3.071, de 1 de janeiro de 1916 - Código Civil.” [??]
Para operar essa infraestrutura, na época, dependia-se de soluções de software e hardware estrangeiras, de código e desenho fechados. Lançou-se então o projeto João-de-Barro, para o desenvolvimento
de toda a estrutura necessária para a operação de uma ICP, porém em Software aberto, auditável e de
tecnologia nacional.
Neste contexto, a UFSC, através do LabSEC (Laboratório de Segurança em Computação), ficou
responsável pelo desenvolvimento do Software de Gestão de Ciclo de Vida de Certificados Digitais
(SGC) para a AC Raiz Brasileira da ICP-Brasil. As funcionalidades e requisitos que deveriam estar
presentes foram definidos pelo ITI, através de outras entidades participantes. O software recebeu o nome
Ywapa (“Raiz”, em Tupi-Guarani).
2
O presente trabalho diz respeito ao processo de finalização e entrega deste software, através de atividades desenvolvidas dentro do LabSEC. Os autores participaram ativamente do ciclo de desenvolvimento
do software, implementando melhorias e correções necessárias.
1.2
OBJETIVOS
1.2.1
GERAL
O objetivo geral deste trabalho é apresentar as atividades desenvolvidas durante a atuação dos autores
no projeto SGC/João-de-Barro
1.2.2
ESPECÍFICOS
• Descrever o escopo de aplicação do software;
• Descrever as principais melhorias implementadas no software;
• Descrever o processo de ramificação do software Ywapa para o software Ywyra, que é o Software
de Gestão de Ciclo de Vida de Certificados para Autoridades Certificadoras Intermediárias;
1.3
METODOLOGIA
1.4
CONTEÚDO DO DOCUMENTO
Este documento está assim estruturado. O Capı́tulo ?? apresenta (...)
3
2
2.1
FUNDAMENTAÇÃO TEÓRICA
CRIPTOGRAFIA
A palavra Criptografia tem sua origem na união de duas palavras gregas: kryptos, que significa
oculto ou escondido, e graphos que significa escrever. Sendo assim criptografia pode ser definida como
a técnica de escrever em código.
Desde a antiguidade a criptografia, ou mais especificamente a cifragem, vem sendo usada para registrar e transmitir informações sigilosas, principalmente em tempo de guerra. Dentre os exemplos mais
famosos estão a cifra de César, uma técnica de substituição de letras usada pelo Império Romano para
proteger as informações repassadas às legiões espalhadas pelos seus vastos territórios, e mais recentemente a máquina Enigma, usada pela Alemanaha Nazista durante a Segunda Guerra Mundial, que era
composta por uma série de rotores e engrenagens que cifravam o texto à medida que era digitado.
Cifragem basicamente é o processo que faz uso da criptografia pra ocultar uma mensagem. O processo de restaurar a mensagem original à partir da cifrada, ou seja o inverso da cifragem, é conhecido
como decifragem.
Estes processos podem ser demonstrados facilmente por meio de uma função matemática e de sua
inversa. Por exemplo:
c(m) = m − 3
Considerando uma mensagem m =10, por meio da operação acima terı́amos o texto cifrado c = 7.
Em seguida:
m(c) = c + 3
Aplicando a função inversa na mensagem cifrada c = 7 obtemos seu valor inicial m = 10.
Este exemplo ilustra de forma clara os fundamentos de cifragem e decifragem, mas ele ainda está
longe de uma aplicação real. Para proseguir é necesário introduzir o conceito de chave.
Usando a mesma função anterior e substituindo o valor 3 pela variável k, se crifrarmos uma mensagem m qualquer com k e manter o valor de k em segredo, a mensagem só poderá ser decifrada por quem
4
conhecer o valor de k. Desta forma k pode ser chamada de chave, pois será usada para fechar e abrir a
mensagem.
A criptografia moderna acompanhou o advento dos computadores e das operações binárias, gerando
cifras muito mais complexas, assim como chaves muito maiores. Enquanto as cifras mais antigas estavam
sujeitas a ataques de força bruta, onde todas as chaves possı́veis eram testadas, as modernas tornaram
a prática inviável já que em uma chave de 128 bits, tamanho comum nos algoritmos atuais, o processo
levaria na ordem de milhões de anos.
A ameaça agora vem das técnias de criptoanálise, que tentam tirar vantagem de falhas nos algoritmos, além de teoria de probabilidade e inúmeros outros meios para tentar uma quebra da criptografia.
Isso faz com que os algoritmos criptográficos fiquem em constante evolução.
2.1.1 CRIPTOGRAFIA ASSIMÉTRICA
A chave tem um papel de destaque na segurança de um algoritmo de cifragem, já que o processo não
depende mais do sigilo do algoritmo, e sim da chave. Se a finalidade da criptografia é o armazenamento
de informação de forma segura para uso posterior a segurança da chave pode ser facilmente garantida
armazenando a chave em uma mı́dea e esta em um cofre.
Mas quando se deseja enviar mensagens sigilosas para lugares distantes através de um meio não
seguro, como por exemplo a Internet, o uso da criptografia simétrica, ou convencional, apresenta algumas
dificuldades. Para que o destinatário seja capaz de abrir a mensagem a chave terá que ser enviada a ele
por um canal seguro, o qual geralmente é muito caro, caso contrário não haveria necessidade de usar a
criptografia em primeiro lugar.
Em 1976, os pesquisadores norte-americanos Whitfield Diffie e Martin Hellman[??] publicaram um
artigo chamado ”New directions in cryptography” onde descreveram uma alternativa para o problema da
troca de chaves entre emissor e receptor, que ficou conhecida como criptografia assimétrica. Nesse novo
modelo ao invés de uma única chave é usado um par de chaves, onde uma delas é publica(pode e deve
ser divulgada) e a outra privada(secreta). Geradas sob determinadas propriedades matemáticas, o que for
cifrado com a chave pública só poderá ser decifrado com a chave privada, e vice-versa.
Podemos ilustrar o conceito com a ajuda dos personagens favoritos dos autores do tema: Alice e
Beto. Se Alice deseja enviar uma mensagem a Beto ela só precisa crifrá-la com a chave pública de Beto.
Apenas Beto, que é o custodiante da chave privada poderá decifrá-la. Dessa forma é fácil perceber que é
desejável que a chave pública de um indivı́duo seja divulgada de alguma forma.
Outra caracterı́tica interessante e muito útil da criptografia assimétrica é a introdução do conceito
de assinatura digital. Uma vez que Beto é o único detentor de sua chave privada, se ele crifrar uma
mensagem com ela a mesma só poderá ser decifrada com sua chave pública. Assim quem conseguir
decifrar a mensagem somente o fará com a chave pública de Beto, e portanto saberá que ela só pode ter
5
sido cifrada por ele, o que caracteriza uma forma de assinatura.
Para que a idéia de assinatura digital funcione na prática é necessária uma forma de garantir a
autenticidade das chaves, impedindo que uma pessoa tente se passar por outra. Isto é feito por meio de
uma Infraestrutura de Chaves Públicas.
2.2
INTRAESTRUTURA DE CHAVES PÚBLICAS
Apesar das facilidades proporcionadas pela criptografia assimétrica, o problema para vincular o
chave pública com um único dono persistia. Para solucionar tal problema, surgiu a idéia da certificação
digital, através do uso de certificados digitais. A partir deste ponto muitos estudos foram feitos em cima
deste conceito para o desenvolvimento de uma infraestrutura para o uso seguro de chaves públicas. Os
tópicos seguintes falarão sobre o certificado digital, seu funcionamento e suas formas de uso.
2.2.1
CERTIFICADOS DIGITAIS
Kohnfelder[??] fez a primeira proposta de um documento que tivesse além da chave pública,
informações relativas ao dono do par de chaves, para dessa forma identifica-lo. Porém, para as informações
no certificado serem confiáveis, é preciso que uma terceira parte confiável assine esse documento. Ou
seja, o certificado digital só será confiável se seu signatário for confiável.
Algumas soluções foram criadas a partir da certificação digital, uma delas é o uso de redes de
confiança, método usado pelo PGP (Pretty Good Privacy), que consiste na criação de um certificado que
pode receber várias assinaturas, e quanto mais assinaturas tiver mais confiável será seu conteúdo. A idéia
se baseia na forma natural que uma rede de confiança se estabelece na sociedade.
Mas essa abordagem não é completamente segura e, para determinados processos, ela não pode
ser aplicada. Então, nesses casos que necessitam de um nı́vel de confiabilidade total, usa-se a idéia de
ICP hierárquica com um ponto de confiança centralizado, com isso se introduz a idéia de Autoridades
Certificadoras e Requisições de Certificado.
2.2.2 AUTORIDADES CERTIFICADORAS
Em uma ICP hierárquica a confiança se concentra nas Autoridades Certificadoras, que são, como o
nome mesmo diz, autoridades responsáveis por certificar a autenticidade de um certificado digital. Em
poucas palaras, a AC é responsável por emitir certificados para entidades finais ou para outras ACs.
Na figura abaixo podemos identificar as setas como certificados, as quais partem do emissor do
certificado e vão para quem o certificado está sendo emitido. Esse tipo de estrutura é bem comum para
representação de árvores de certificação. No topo da estrutua pode-se ver a Autoridade Certificadora
6
Raiz, que é o ponto central de confiança, ela possui um certificado auto assinado, abaixo dela existem
autoridades certificadoras intermediárias que possuem certificados assinados pela AC raiz.
(Imagem de uma ICP hierárquica)
Além da emissão de certificados, a autoridade certificadora fica responsável também pela revogação
dos mesmos, quando estes tem por algum motivo sua chave comprometidade, informações inconsistentes, estão fora de uso, entre outras causas. E conforme os certificados são revogados é necessário que
uma lista de certificados revogados seja publicada, para que seja de conhecimento geral os certificados
que não são mais válidos.
2.2.3 REQUISIÇÕES DE CERTIFICADOS
No modelo hierárquico, uma entidade com um certificado auto assinado, que não seja a autoridade
certificadora raiz, não pode ser considerada de confiança. Para se conseguir um certificado dentro da
árvore de confiança da ICP é preciso requisitar para alguma AC da árvore, um certificado. Por esse
motivo, criou-se um padrão para se fazer essas requisições, através das chamadas Requisições de Certificado.
As requisições de certificado são parecidas com os próprios certificados, mas não possuem uma
assinatura. Elas contém as informações do dono do par de chaves e a chave pública. A autoridade
certificadora recebe essa requisição e confirma se os dados nela são válidos e então emite um certificado
para o requerente, assinando a requisição.
2.2.4 LISTA DE CERTIFICADOS REVOGADOS
Como já foi dito, a autoridade certificadora é reponsável por emitir em tempos em tempos uma lista
de certificados revogados, essas listas devem seguir alguns padrões, para garantir segurança e eficiência.
Uma LCR pode ser muito extensa, com o tempo muitos certificados podem vir a ser revogados
por uma AC. Isso pode tornar ineficiente a verificação de validade de um certificado. Portando, apesar
do nome ser Lista de Certificados Revogados, essa lista não possui os certificados em si, e sim apenas
algumas informações, como o serial do certificado revogado e a data de revogação, apenas o necessário
para checar se um certificado é válido ou não.
Um outro método para evitar que a lista fique muito grande é remover os certificados já expirados,
pois esses já vão ser considerados inválidos por possuirem neles mesmo a data de validade. Além disso
tudo, a lista deve também ser assinada pela Autoridade Certificadora, para garantir sua autenticidade.
7
2.3
ICP-BRASIL
Conforme o site do ITI[??], entidade responsável por manter a ICP-Brasil, a Infra-Estrutura de
Chaves Públicas Brasileira - ICP-Brasil é uma cadeia hierárquica e de confiança que viabiliza a emissão
de certificados digitais para identificação do cidadão quando transacionando no meio virtual, como a
Internet.
2.3.1
ESTRUTURA DA ICP-BRASIL
A Infra estrutura de chaves públicas brasileira segue o modelo hierárquico, com uma Autoridade
Certificadora Raiz e com apenas ACs Intermediárias no seu segundo e terceiro nı́vel, conforme mostrado
na figura a seguir.
(imagem da estrutura da ICP-Brasil)
2.3.2
AUTORIDADES REGISTRADORAS
A ICP-Brasil adota o uso de Autoridades Registradoras, entidades responsáveis pela interface do
usuário com a Autoridade Certificadora. Uma AR tem como função a validação dos dados de uma
requisição e a solicitação de emissão de certificados para uma autoridade certificadora. As ARs podem
ser locais, junto das ACs para quais operam, ou remotas.
A uso de ARs é importante para descongestionar as obrigações da AC e disseminar o uso da
certificação digital por todo paı́s. Além de garantir uma segurança maior, já que é obrigação de toda
AR, manter registros das suas operações para possı́veis auditorias futuras.
2.3.3 LEGISLAÇÃO
A ICP-Brasil possui um conjunto de normas e procedimentos que devem ser seguidos na ICP brasileira, ela foi feita para legalizar, padronizar e garantir interoperabilidade entre autoridades certificadoras
dentro da ICP, mantendo o máximo de segurança e confiabiliade. Em termos legais, a ICP Brasileira é
a única válida dentro do território nacional. Portanto, fica responsável por todo processo que faz uso de
certificação digital no paı́s, tanto das áreas públicas como privadas.
NORMAS DA ICP-BRASIL
CERIMÔNIAS
8
3
SISTEMA GERENCIADOR DE CERTIFICADOS
3.1
FUNCIONALIDADES
3.2
PROCESSO DE DESENVOLVIMENTO
3.2.1
DOCUMENTAÇÃO DE DESENVOLVEDOR
3.2.2
PLANO DE TESTES
3.3
RAMIFICAÇÃO DO SGC EM YWAPA E YWYRA
9
4
MELHORIAS NO SGC
4.1
ROTINA DE ATUALIZAÇÃO DE BASES DE DADOS
4.2
IMPLEMENTAÇÃO DE NOVOS ALGORITMOS
4.2.1
SHA-2
4.2.2
ECDSA
10
5
5.1
CONSIDERAÇÕES FINAIS
TRABALHOS FUTUROS
11
REFERÊNCIAS
Download

felipe carlos werlang, lucas gonc¸ alves martins - Projetos