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