Certificação Digital : Uma Nova Era de Segurança Eletrônica

3,037 views

Published on

Monografia de Samuel Vasconcellos Serra sobre Certificacao Digital.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Certificação Digital : Uma Nova Era de Segurança Eletrônica

  1. 1. 1 UNIVERSIDADE TIRADENTES SAMUEL VASCONCELLOS SERRA CERTIFICAÇÃO DIGITAL : UMA NOVA ERA DE SEGURANÇA ELETRÔNICA ARACAJU 2006
  2. 2. 2 SAMUEL VASCONCELLOS SERRA CERTIFICAÇÃO DIGITAL : UMA NOVA ERA DE SEGURANÇA ELETRÔNICA Monografia apresentada a Universidade Tiradentes como um dos pré-requisitos para a obtenção do grau de Bacharel em Sistemas de Informação. ANDRÉS IGNÁCIO MARTÍNEZ MENÉNDEZ ARACAJU 2006
  3. 3. 3 SAMUEL VASCONCELLOS SERRA CERTIFICAÇÃO DIGITAL : UMA NOVA ERA DE SEGURANÇA ELETRÔNICA Monografia apresentada como exigência parcial para obtenção do grau de Bacharel em Sistemas de Informação à comissão julgadora da Universidade Tiradentes. Aprovada em ___/___/_____ BANCA EXAMINADORA _______________________________________________ Andrés Ignácio Martínez Menéndez Universidade Tiradentes _______________________________________________ Alex Sandro Mateus Dantas Universidade Tiradentes _______________________________________________ Givanildo Santana do Nascimento Secretaria de Estado da Fazenda de Sergipe
  4. 4. 4 Aos meus familiares que sempre estiveram presentes nesta vitória.
  5. 5. 5 AGRADECIMENTOS A Deus, por me dar forças nos momentos difíceis e fazer com que eu seguisse o caminho correto para a realização deste trabalho. Ao amor da minha vida, minha esposa Ivi, por todo carinho, paciência e pela compreensão nos momentos de ausência, e por está sempre ao meu lado, apoiando e incentivando. Ao meu orientador, Andrés Menéndez, pela dedicação e o excelente trabalho de orientação e pelos conhecimentos passados. Aos professores da Universidade Tiradentes por toda aprendizagem transmitida e que fizeram assim contribuir para meu crescimento pessoal e profissional. Ao amigo Luiz Ricardo pela contribuição e experiência passada neste trabalho. O meu muito obrigado a todos aqueles que de alguma forma contribuíram e permitiram que eu atingisse meus objetivos durante este projeto final.
  6. 6. 6 SUMÁRIO LISTA DE FIGURAS ........................................................................................................................................... 8 LISTAGENS DE CÓDIGO .................................................................................................................................. 9 RESUMO ............................................................................................................................................................. 10 ABSTRACT ......................................................................................................................................................... 11 1. INTRODUÇÃO ............................................................................................................................................... 12 2. CRIPTOGRAFIA............................................................................................................................................ 15 2.1 CRIPTOGRAFIA SIMÉTRICA .......................................................................................................................... 16 2.2 CRIPTOGRAFIA ASSIMÉTRICA ...................................................................................................................... 18 3. ASSINATURA DIGITAL............................................................................................................................... 21 3.1 ALGORITMOS CRIPTOGRÁFICOS................................................................................................................... 22 3.2 PROCESSO DE ASSINATURA DIGITAL ........................................................................................................... 24 4. CERTIFICADO DIGITAL ............................................................................................................................ 27 4.1 AUTORIDADES CERTIFICADORAS................................................................................................................. 29 4.1.1 Estrutura Hierárquica da ICP-Brasil ................................................................................................. 30 4.2 MODELOS DE CERTIFICADO DIGITAL ........................................................................................................... 32 4.2.1 - Modelos de Armazenamento............................................................................................................. 32 4.2.2 Modelos de Aplicação de Certificado Digital..................................................................................... 36 4.3 RENOVAÇÃO E REVOGAÇÃO DE UM CERTIFICADO....................................................................................... 39 4.4 PROTOCOLO SSL ......................................................................................................................................... 40 4.4.1 Processo de estabelecimento de uma sessão SSL ............................................................................... 42 4.5 REQUISIÇÃO E INSTALAÇÃO DE UM CERTIFICADO DIGITAL ......................................................................... 45 5. TECNOLOGIAS DISPONÍVEIS EM JAVA................................................................................................ 47 6 - ASSINATURA DIGITAL EM ARQUIVOS XML ..................................................................................... 57 6.1 - ESTRUTURA DE UM DOCUMENTO XML..................................................................................................... 57
  7. 7. 7 6.2 - SEGURANÇA DE UM DOCUMENTO XML..................................................................................................... 58 6.3 - ELEMENTOS DE UMA ASSINATURA DIGITAL EM XML............................................................................... 61 6.3.1 - Elemento <Signature> ..................................................................................................................... 61 6.3.2 - Elemento <SignedInfo> ................................................................................................................... 61 6.3.3 - Elemento <SignatureValue> ............................................................................................................ 63 6.3.4 - Elemento <KeyInfo> ........................................................................................................................ 64 7 - ESTUDO DE CASO....................................................................................................................................... 67 7.1 - DESCRIÇÃO E FUNCIONAMENTO DA APLICAÇÃO ........................................................................................ 67 7.2 - ESTRUTURA DO PROJETO ........................................................................................................................... 70 7.3 - CONSIDERAÇÕES GERAIS .......................................................................................................................... 70 8 - CONCLUSÃO ................................................................................................................................................ 72 REFERÊNCIAS BIBLIOGRÁFICAS............................................................................................................... 75 ANEXO I - CLASSES DO PROJETO DO ESTUDO DE CASO ................................................................... 78 ANEXO II - ARQUIVOS DO PROJETO DO ESTUDO DE CASO .............................................................. 93
  8. 8. 8 LISTA DE FIGURAS FIGURA 2.1 - PROCESSO DE CRIPTOGRAFIA EM UM TEXTO ...............................................16 FIGURA 2.2 - ESQUEMA DO PROCESSO DE CRIPTOGRAFIA SIMÉTRICA ...............................17 FIGURA 2.3 - EXEMPLO DE CONFIDENCIALIDADE COM CRIPTOGRAFIA ASSIMÉTRICA ............19 FIGURA 2.4 - EXEMPLO DE AUTENTICIDADE COM CRIPTOGRAFIA ASSIMÉTRICA ...................20 FIGURA 3.1 - PROCESSO DE ENVIO DE UM DOCUMENTO ASSINADO DIGITALMENTE .............24 FIGURA 3.2 - PROCESSO DE RECEPÇÃO DE UM DOCUMENTO ASSINADO DIGITALMENTE ......25 FIGURA 3.3 - PROCESSO DE ASSINATURA DIGITAL COM CONFIDENCIALIDADE .....................26 FIGURA 4.1 - MODELO DA ARQUITETURA DA ICP-BRASIL .................................................31 FIGURA 4.2 - DISPOSITIVO SMARTCARD COM CPF DIGITAL.............................................34 FIGURA 4.3 - DISPOSITIVO SMARTCARD COM CNPJ DIGITAL ..........................................34 FIGURA 4.4 - DISPOSITIVO SMARTCARD COM IDENTIDADE DIGITAL ..................................35 FIGURA 4.5 - DISPOSITIVO TOKEN USB.........................................................................35 FIGURA 4.6 - EXEMPLO DE CERTIFICADO DE SERVIDOR WEB ............................................38 FIGURA 4.7 - USO DO PROTOCOLO SSL NO NAVEGADOR INTERNET EXPLORER .................41 FIGURA 4.9 - PROCESSO DE HANDSHAKE POR SSL ........................................................43 FIGURA 5.1 - ARQUITETURA DA JCA..............................................................................48 FIGURA 5.2 - INTERFACE DE EXECUÇÃO DE UM ARQUIVO .CER GERADO PELO KEYTOOL .....51 FIGURA 5.3 - CAMINHO DE CERTIFICAÇÃO DO CERTIFICADO DA FIGURA 17........................51 FIGURA 5.4 - INTERFACE DE EXECUÇÃO DE UM ARQUIVO .CER APÓS A INSTALAÇÃO ...........52 FIGURA 5.5 - CAMINHO DE CERTIFICAÇÃO DO CERTIFICADO DA FIGURA 5.4.......................52
  9. 9. 9 FIGURA 5.6 - CAMINHO DE CERTIFICAÇÃO DE UM CERTIFICADO DA CAIXA .........................53 LISTAGENS DE CÓDIGO LISTAGEM 5.1 - CRIAÇÃO DE UM KEYSTORE COM KEYTOOL ............................................48 LISTAGEM 5.2 - IMPORTAÇÃO DE UM CERTIFICADO X.509 PARA UM KEYSTORE JKS..........50 LISTAGEM 5.3 - EXPORTAÇÃO DE UM CERTIFICADO X.509 DO KEYSTORE JKS .................50 LISTAGEM 5.4 - CLASSES DA API JAVA ..........................................................................53 LISTAGEM 5.5 - MÉTODO DE EXTRAÇÃO DE UMA CHAVE PRIVADA .....................................54 LISTAGEM 5.7 - MÉTODO DE CRIAÇÃO DE UMA ASSINATURA DIGITAL .................................55 LISTAGEM 5.8 - MÉTODO DE VALIDAÇÃO DE UMA ASSINATURA DIGITAL ..............................56 LISTAGEM 6.1 - CÓDIGO FONTE DE UM EXEMPLO DE DOCUMENTO XML ............................58 LISTAGEM 6.2 - ESPECIFICAÇÃO SIMPLIFICADA DE UMA ASSINATURA XML. .......................60 LISTAGEM 6.3 - ELEMENTOS OBRIGATÓRIOS DE UMA ASSINATURA XML............................60 LISTAGEM 6.4 - DEFINIÇÃO DO ESQUEMA DO ELEMENTO <SIGNATURE>............................61 LISTAGEM 6.5 - DEFINIÇÃO DO ESQUEMA DO ELEMENTO <SIGNEDINFO> ..........................62 LISTAGEM 6.6 - DEFINIÇÃO DO ESQUEMA DO ELEMENTO <REFERENCE>...........................63 LISTAGEM 6.7 - DEFINIÇÃO DO ESQUEMA DO ELEMENTO <SIGNATUREVALUE> ..................64 LISTAGEM 6.8 - DEFINIÇÃO DO ESQUEMA DO ELEMENTO <KEYINFO>................................65
  10. 10. 10 RESUMO A cada dia percebe-se um crescimento no número de aplicações que estão sendo desenvolvidas e disponibilizadas na internet devido às vantagens por ela oferecidas, e por este motivo as pessoas vêm procurando este meio de comunicação para fazer publicações, comércio eletrônico e realizar a troca de mensagens e arquivos de forma mais rápida e eficiente. Com isso, na mesma proporção em que cresce a disponibilização de aplicações na internet, também aumentam os riscos relacionados à segurança da informação. Diante destas circunstâncias, este trabalho demonstra a importância e as principais técnicas das tecnologias de certificado digital e assinatura digital as quais, juntas e bem aplicadas, garantirão a autenticidade, a confidencialidade, a integridade e o não repúdio nas informações transitadas em aplicações desenvolvidas para a Internet. Ainda será mostrado de forma prática, através de uma aplicação de comércio eletrônico, o uso dos certificados digitais que fornecem a autenticação do servidor e a autenticação do cliente. Esta aplicação irá gerar também arquivos XML que através destes certificados e de um framework específico para assinatura digital em documentos XML, serão assinados digitalmente e enviados para seus destinos. As mensagens e arquivos irão trafegar na aplicação dentro de um canal de comunicação único e seguro entre um cliente e um servidor, que será criado durante a utilização dos protocolos de segurança, SSL e HTTPS, exibidos na aplicação após ser incorporado um certificado digital de servidor web. Desta forma, será de fácil conhecimento e de conscientização do público, principalmente leigo, a necessidade e as situações relevantes de uso da tecnologia de certificação digital.
  11. 11. 11 PALAVRAS-CHAVE: Segurança; Certificado Digital; Assinatura Digital; XML ABSTRACT Every day a growth in the number of applications is perceived that are being developed and available in the Internet due its offered advantages, and because of it people come looking this media to make publications, electronic commerce and to carry through the exchange of messages and archives of faster and efficient form. With this, in the same ratio where the availability of applications in the Internet grows, also they increase the related risks large-scale with the security of the information. Ahead of these circumstances, this work demonstrates to the importance and the main techniques of the technologies of digital certificate and digital signature, where together and applied well they will guarantee the authenticity, the confidentiality, the integrity and not the repudiation in the information transited in applications developed for the Internet. Still it will be shown of practical form, through a developed application of electronic commerce, the use of the digital certificates that supply to the authentication of the server and the authentication of the customer. This application will go to also generate archives XML that through these certificates and one framework specific for digital signature in documents XML, will be signed digitally and envoyed for its destinations. The messages and archives will go to pass through in the application inside of a safe communication channel only e between a customer and a server, who will be created during the use of the protocols of security, SSL and HTTPS, shown in the application after to be incorporated a digital certificate of server web. In this way, it will be easy known and awareness of the public, mainly strangers, the necessity and the excellent situations of use of the technology of digital certification.
  12. 12. 12 Key-words : Security; Digital Certificate ; Digital Signature; XML 1. INTRODUÇÃO Com o surgimento da internet as pessoas passaram a vivenciar um novo paradigma e começaram a executar procedimentos de forma automática, rápida e com maior qualidade. Procedimentos como, de troca de mensagens, de armazenamento de dados, pesquisa e acesso às informações de diversas naturezas, movimentação de compras e vendas através do comércio eletrônico e troca de informações confidenciais entre empresas. Na mesma proporção que a internet vem trazendo facilidade para as pessoas, também traz risco e insegurança, este é o preço que deve ser pago pelo conforto, agilidade, eficiência e economia gerada que ela proporciona [1]. Para garantir a confiança no mundo digital, tecnologias de segurança da informação vêm sendo desenvolvidas e adotadas para o uso seguro na Internet de documentos digitais e de transações eletrônicas. Novas tecnologias como o certificado digital e a assinatura digital estão a cada dia sendo mais utilizadas para garantir a segurança e a confiança digital na Internet. A idéia é que a mesma segurança e confiança dada no mundo convencional (o do papel) para manipulação dos processos burocráticos também seja dada no mundo digital [2]. O certificado digital é um documento eletrônico que, associado a uma assinatura digital, garante autenticidade, confidencialidade e integridade dos dados, ou seja, é uma identidade digital que dá a permissão de acesso e a segurança às informações disponibilizadas em serviços on-line [3]. Para que o certificado digital tenha validade jurídica ele tem que ser emitido por uma autoridade certificadora, pois é ela quem dará uma identidade digital a uma pessoa ou a uma empresa e determinará as políticas e os procedimentos de orientação de uso dos certificados.
  13. 13. 13 Com os certificados digitais é possível criptografar e assinar informações digitais de modo que as pessoas sem autorização não acessem e nem modifiquem o conteúdo de uma informação. Atualmente o certificado digital é o meio mais seguro de identificar as partes envolvidas em uma comunicação, isto porque apenas os logins e as senhas tradicionalmente utilizados não garantem uma identificação segura de acesso exclusivo devido a necessidade de compartilhamento dos mesmos. Para estabelecer um canal de comunicação seguro entre navegadores Web e servidores é utilizado, junto com os certificados digitais, o protocolo SSL (Secure Sockets Layer) que garantirá a autenticação, privacidade da mensagem e a integridade da mensagem, eliminando assim a possibilidade das mensagens serem interceptadas ou visualizadas sem autorização [4]. Diante de toda uma pesquisa e estudo realizado, este projeto deverá mostrar a importância na utilização dos certificados digitais para pessoas físicas e jurídicas nos dias atuais, e também mostrar a segurança existente no uso da assinatura digital quando aplicada em documentos confidenciais que deverão ser assinados, garantindo assim através de técnicas de criptografia a total proteção e sigilo das informações a serem enviadas a um destinatário. No segundo capítulo serão mostrados, os conceitos, os tipos de criptografia simétrica e assimétrica, vantagens e desvantagens de cada uma delas. Em seguida, o terceiro capítulo explicará a importância e o processo de assinatura digital em mensagens e arquivos, e ainda os principais algoritmos criptográficos utilizados atualmente neste processo. No quarto capítulo será conceituada e explicada a tecnologia de certificado digital, o que são autoridades certificadoras e como está formada a estrutura hierárquica da infra-estrutura de chave pública no Brasil e a relevância destas autoridades para os certificados digitais. Neste capítulo serão também mostrados os principais modelos de armazenamento e de aplicações de certificados digitais, como é feita a renovação e revogação de um certificado, a importância do protocolo SSL e os passos de como é criada uma sessão SSL no processo de certificação digital e, de forma breve, será explicado de como é feita a requisição e a instalação de um certificado digital através de uma autoridade certificadora. No quinto capítulo, serão mostradas as tecnologias disponíveis na Plataforma Java para assinatura digital de mensagens e arquivos utilizando padrões
  14. 14. 14 de certificados digitais. No sexto capítulo, será explicado a assinatura digital em arquivos XML (Extensible Markup Language) e os principais elementos de uma especificação existente para este fim. E no sexto capítulo será mostrado de forma prática, através de uma aplicação desenvolvida de um estudo caso de comércio eletrônico, o uso dos certificados digitais que fornecem a autenticação do servidor e a autenticação do cliente. Esta aplicação irá gerar também arquivos XML que, através destes certificados e de um framework específico para assinatura digital em documentos XML, serão assinados digitalmente e enviados aos seus destinos para que nestes sejam feitas às devidas validações utilizando as técnicas que envolvem assinatura digital e certificado digital a serem demonstradas no decorrer deste documento.
  15. 15. 15 2. CRIPTOGRAFIA A importância da segurança da informação no mundo digital vem aumentando a cada dia e, a depender da necessidade de sigilo, deve-se conhecer o meio pelo qual a informação será transitada e para quem ela será enviada. Com isso, técnicas de segurança são aplicadas para se garantir a confidencialidade de uma informação, dentre elas a criptografia. A criptografia surgiu da junção das palavras gregas Kryptós (Cripto), que significa esconder/ocultar e Grápho (Grafia) de escrita. A criptografia pode ser conceituada como o processo de codificação da informação para que apenas o emissor e o receptor possam acessá-la, evitando assim que uma pessoa não autorizada tenha acesso ao seu conteúdo. Os primeiros métodos de criptografia eram feitos utilizando sempre o mesmo algoritmo de codificação, com isso bastava que o receptor da informação tivesse conhecimento desse algoritmo para poder interpretá-la. Mas havia um problema: caso um emissor fosse enviar uma informação sigilosa para uma outra pessoa, corria o risco de uma pessoa sem autorização decifrá-la, já que ela também tinha o mesmo algoritmo que decifrava informações vindas deste emissor [11]. Para resolver este problema foram criadas as chaves criptográficas, o emissor poderia usar o mesmo algoritmo para diversos receptores de uma informação, para isto bastava que cada receptor utilizasse uma chave diferente. Se a chave fosse perdida ou roubada, era apenas necessário trocá-la e o mesmo algoritmo era mantido. Sendo assim, para conseguir decifrar e ler a informação, a chave do receptor deverá ser compatível com a chave do emissor. A chave de criptografia é um número utilizado em um determinado algoritmo de criptografia que, quanto maior seu tamanho, maior será o número de combinações e mais segura será a criptografia. Quando se fala, por exemplo, de uma chave de 8 bits, significa dizer que 256 chaves poderão ser usadas para criptografar e descriptografar uma informação. Este cálculo é feito com a fórmula de
  16. 16. 16 2 elevado a n, onde n é quantidade de bits. Uma chave de 8 bits não garante muita segurança, pois qualquer pessoa pode gerar 256 chaves e ficar tentando descobrir qual delas foi utilizada no algoritmo de criptografia. Para garantir uma maior segurança, devem ser utilizadas chaves maiores. Se no algoritmo for usada uma chave de 128 bits, teremos uma quantidade grande de combinações possíveis para descobrir a chave e isto garantirá uma maior segurança na criptografia da informação [11]. A criptografia não garante que uma informação não possa ser interceptada ao ser enviada a um destinatário, mas garante que quem interceptou não possa decifrar o seu conteúdo ou então que o custo de quebrar a criptografia seja maior do que o benefício trazido no acesso da informação secreta [3]. A figura 2.1 mostra o processo de criptografia de um texto, no qual a partir de um texto claro, também conhecido como texto plano, se aplica o algoritmo criptográfico e gera um texto cifrado. Figura 2.1 - Processo de criptografia em um texto Fonte : http://www.iconenet.com.br/cd/cd_guia.pdf 2.1 Criptografia Simétrica Existem dois tipos de criptografia: simétrica e assimétrica. A criptografia simétrica utiliza a mesma chave para cifrar e decifrar informação, a chave secreta deve ser compartilhada entre as partes envolvidas neste processo de cifragem e decifragem de informação. O emissor e o receptor da mensagem devem conhecer esta chave secreta e, com ela, apenas ambas as partes poderão trocar informações de forma
  17. 17. 17 confidencial. Isto impede que pessoas que não tenham autorização acessem o conteúdo da mensagem transitada. A figura 2.2 mostra como funciona o processo de criptografia simétrica. Inicialmente, um determinado emissor, utilizando um algoritmo de criptografia e de posse da chave secreta, criptografa a mensagem. Em seguida o receptor, que irá ler a mensagem que está cifrada, aplica o mesmo algoritmo e a mesma chave secreta utilizados pelo emissor para fazer a descriptografia da mensagem e obter a mensagem em original. Figura 2.2 - Esquema do processo de criptografia simétrica Fonte : http://www.acate.com.br/kit_imprensa/artigo_certificacao_digital.pdf Se a chave secreta utilizada no algoritmo de criptografia precisar ser substituída por outra, seja por motivo de perda, de roubo de chave ou para aumentar a segurança, o responsável pela modificação da chave terá que enviar esta nova chave para todas as pessoas com quem já se comunicava com a chave antiga, isto para que nas próximas vezes que os receptores receberem as informações possam decifrá-las utilizando esta nova chave. Diante desta situação, percebe-se que o principal problema da criptografia simétrica é o compartilhamento da chave secreta que deve ser feito entre as partes que precisem se comunicar. Por isso, deve-se utilizar um meio seguro ou adotar uma política de segurança para o envio desta chave única entre ambas as partes [10]. Caso não exista tal segurança, um intruso ou uma terceira pessoa poderá capturar a mensagem, e em uma situação extrema, porém possível, descobrir a
  18. 18. 18 chave secreta e o algoritmo utilizado e neste caso conseguirá decifrar o conteúdo da mensagem e ter acesso às informações. Um outro problema percebido da criptografia simétrica está na distribuição das chaves, pois, sempre que mais uma pessoa precise ler um documento através deste tipo de criptografia, precisa também receber esta chave para ser utilizada no algoritmo de criptografia e ter acesso ao conteúdo da informação [10]. A criptografia simétrica é bem aplicada se o objetivo de uma aplicação é apenas criptografar dados em ambiente local, ou seja, os dados que deverão ser armazenados de forma segura não serão enviados para ninguém [3]. Por exemplo, poderia utilizar a criptografia simétrica para criptografar informações que fossem manipuladas e salvas fisicamente através de programas clientes, onde estas informações não fossem trafegadas por uma rede. 2.2 Criptografia Assimétrica A criptografia assimétrica é também chamada de criptografia de chave pública. Este tipo de criptografia utiliza um par de chaves que são geradas e relacionadas entre si. Uma chave é chamada de chave pública e outra de chave privada. A chave pública, como o nome já diz, pode ser do conhecimento de todos, mas a chave privada apenas deve pertencer ao dono da chave. Os algoritmos de criptografia de chave pública garantem a confidencialidade e a autenticidade das informações [4]. Se o emissor quiser enviar uma informação de forma sigilosa, ele deverá utilizar a chave pública do receptor para cifrar a informação. Para isto, o receptor deverá disponibilizar sua chave pública em diretórios públicos acessados pela Internet [4]. O exemplo da figura 2.3 mostra como uma pessoa pode enviar uma informação sigilosa onde apenas Beto poderá acessá-la, para isso esta pessoa deverá utilizar a chave pública de Beto para cifrar a informação e enviá-la. Desta forma, somente Beto poderá descriptograr a mensagem e recuperar as informações
  19. 19. 19 originais, pois somente ele possui a chave privada correspondente à chave pública que foi cifrada a mensagem, desta forma é mantida a confidencialidade da informação. Figura 2.3 - Exemplo de confidencialidade com criptografia assimétrica Fonte : http://www.iti.br/twiki/pub/Main/Cartilhas/brochura01.pdf A autenticidade da informação é feita no sentido contrário ao da confidencialidade. O emissor utiliza sua chave privada para cifrar a informação para que se garanta a autoria desta informação ou a identificação em uma determinada transação. Esta garantia é feita pelo motivo de que a chave privada é de posse única deste emissor [4]. No exemplo da figura 2.4, Alice quer enviar para Beto uma informação que garantirá a autenticidade da informação. Para isso Alice utiliza a sua chave privada para cifrar a informação e enviá-la para Beto. Desta forma, Beto poderá descriptograr a mensagem e recuperar as informações originais, pois ele possui a chave pública de Alice correspondente à chave privada que foi cifrada a mensagem. Qualquer pessoa poderá decifrar a informação enviada por Alice, para isso basta conhecer a chave pública dela. Desta forma é mantida a autenticidade da informação, uma vez que o processo de cifrar o texto com a chave privada foi feito apenas por Alice.
  20. 20. 20 Figura 2.4 - Exemplo de autenticidade com criptografia assimétrica Fonte : http://www.iti.br/twiki/pub/Main/Cartilhas/brochura01.pdf O algoritmo de chave pública garante que mensagens cifradas com a chave pública só serão acessíveis com a chave privativa e mensagens cifradas com a chave privativa só serão acessíveis com a chave pública [3]. Devido a seu sistema de geração de par de chaves em cada parte da comunicação, acaba-se com os problemas de compartilhamento de chave única e de distribuição de chaves, uma vez que a chave pública poderá ser disponibilizada na internet e a chave privada será do conhecimento apenas do dono da chave e não deverá ser divulgada a ninguém. As técnicas de cifragem de informação utilizando o conceito de chaves públicas garantem a confidencialidade e a autenticidade no conteúdo da informação, e para garantir também a integridade dos dados e a não repudiação da mensagem, outra técnica de segurança chamada de assinatura digital deverá ser aplicada, e este assunto será abordado no próximo capítulo.
  21. 21. 21 3. ASSINATURA DIGITAL O uso de assinatura em documentos está sempre presente na vida das pessoas. Um documento é assinado para que o responsável pela assinatura garanta a sua autenticidade e sua responsabilidade sobre o mesmo. No mundo tradicional, utilizando o papel, a identificação de uma assinatura pode ser feita através da assinatura de punho ou da impressão digital de um dos dedos que é mais utilizada por pessoas que não conseguem assinar seu próprio nome. É importante deixar claro que uma assinatura digital não é igual a uma assinatura digitalizada e nem a assinatura eletrônica. A assinatura digitalizada é quando uma pessoa assina manualmente em um papel e com o auxilio de um aparelho, chamado scanner, a imagem da assinatura no papel é passada para o computador, depois a imagem contendo a assinatura é incluída a documentos que serão enviados aos destinatários. Já a assinatura eletrônica é uma senha utilizada por exemplo por clientes de bancos que, ao ser informada através de um teclado virtual, permite que sejam feitas transações específicas como, pagamentos de contas e transferências. Este tipo de assinatura é apenas uma senha adicional para acesso de serviços específicos e que precisam de uma segurança maior. Já a assinatura digital é utilizada para assinar documentos eletrônicos que deverão ser enviados com segurança aos seus destinatários. Nela também serão utilizados os conceitos de criptografia de chave privada e pública, e se forem usados algoritmos assimétricos mais modernos para geração deste par de chaves, será praticamente impossível descobrir a chave privada a partir da chave pública. Através da assinatura digital é possível garantir: • A autenticidade, ou seja, a identidade de quem está enviando o documento assinado, isto através do uso da chave privada única do emissor do documento; • Integridade dos dados, ou seja, que o conteúdo da informação contida em um documento não seja alterado e chegue íntegro ao seu destino. Isto é feito a partir de um processo de geração de um resumo das informações contidas no documento que será único para cada documento diferente, ou seja, com este resumo é
  22. 22. 22 possível checar se o documento foi alterado ao chegar ao seu destino; • A não-repudiação do documento, ou seja, uma vez o documento assinado digitalmente o emissor/receptor não poderá recusar dizendo que não foi ele quem enviou ou recebeu o documento. Isto pelo motivo de que apenas uma chave privada poderá ter gerada aquela assinatura digital. 3.1 Algoritmos Criptográficos Os algoritmos criptográficos são algoritmos que implementam os métodos necessários de criptografia para se obter autenticidade, confidencialidade e integridade de uma determinada informação. Diante de toda uma questão de segurança, deve-se sempre analisar a validade do algoritmo de criptografia que será aplicado em um determinado processo, de forma que se tenha conhecimento de que se ele já está ultrapassado ou se alguém já conseguiu quebrar sua proteção. A seguir serão mostrados os algoritmos de criptografia mais utilizados nos dias de hoje e que são aplicados no processo de assinatura digital. • RSA: Possui este nome por causa dos nomes dos seus inventores, Ron Rivest Adi Shamir e Len Adleman, e foi criado em 1977. Este é um algoritmo assimétrico ou de chave pública mais utilizado atualmente, por ser considerado um dos mais poderosos algoritmos de criptografia até o momento e por isso é usado na geração de assinatura digital. Atualmente, os tamanhos das chaves de segurança mais utilizados em algoritmos do tipo RSA são de 1024 bits e de 2048 bits, os quais, de acordo com os estudos realizados por cientistas, garantirão segurança nos próximos anos. Antes do RSA era utilizado o algoritmo assimétrico DSA (Digital Signature Algorithm), mas devido a uma falha de segurança encontrada foi considerado fraco e perigoso. Mesmo assim o DSA ainda é utilizado em situações que não exigem um alto nível de segurança;
  23. 23. 23 • MD5: A sigla MD significa Message Digest (resumo da mensagem) e 5 por ser uma versão mais nova do seu antecessor, o MD4, que foi publicado em 1991. Este é um algoritmo que utiliza uma função de hashing, que a partir de um texto informado e através de um complexo algoritmo matemático, gera um valor hash, que é um resumo do texto ou uma seqüência de bytes única que identifica este texto [12]. Esta função de resumo é unidirecional, ou seja, uma vez ela criada não será mais possível recuperar o documento original a partir deste resumo. Este algoritmo foi projetado para ser rápido, simples e seguro e ele produz um valor hash de 128 bits. Apesar de que foi descoberta uma fraqueza neste algoritmo, ele ainda é considerado bastante seguro e bem usado ainda nos sistemas computacionais [6]; • SHA1 – A sigla SHA significa Secure Hash Algorithm (Algorítmo de Resumo Seguro) e 1 por ser uma revisão do SHA, ele foi publicado em 1994. Este é um algoritmo também de hashing com o do MD5. Neste algoritmo é eliminada a fraqueza que existia em uma parte do MD5. Com isso se torna mais seguro do que o MD5. E, para garantir uma segurança maior, o valor de hash gerado no SHA1 é de 160 bits [6]. Este valor de 160 bits é o original do SHA1, que já é um algoritmo muito rápido e seguro, mas poderá ser estendido para 256 e 512 bits para ocasiões que venham precisar de uma segurança ainda maior. Os algoritmos assimétricos não são utilizados por completo no processo de assinatura digital por serem lentos. Se fosse utilizá-los para cifrar e decifrar os documentos eletrônicos causaria uma demora muito grande e, a depender do tamanho do documento, o tempo ainda seria maior, isto porque estes algoritmos criptografam todo o conteúdo do documento. É por isso que a melhor solução é o uso de algoritmos de hashing como o MD5 e o SHA1, que geram apenas um resumo da mensagem, oferecendo assim agilidade e integridade no documento [6]. Os algoritmos assimétricos são utilizados no processo de assinatura digital apenas para cifrar e decifrar o resumo gerado pela função de hashing, garantindo assim autenticidade e confidencialidade no documento assinado.
  24. 24. 24 Atualmente, o algoritmo assimétrico e o algoritmo de hash que são mais utilizados no processo de assinatura digital são o RSA e o SHA1, devido às seguranças oferecidas. 3.2 Processo de Assinatura Digital Para deixar claro o processo de assinatura digital em um documento eletrônico será mostrado passo a passo, desde o momento em que o emissor recebe o par de chaves, a pública e a privada, e utiliza as técnicas específicas da assinatura digital, até a recepção do mesmo por um determinado destinatário. A figura 3.1 mostra inicialmente o usuário A de posse do documento original utilizando um algoritmo de hashing para gerar um resumo deste documento. Em seguida este resumo será cifrado com a sua chave privada e com isso o emissor estará gerando a sua assinatura digital. Em seguida essa assinatura será anexada ao documento original, gerando um documento assinado e este será enviado ao destinatário [1]. Figura 3.1 - Processo de envio de um documento assinado digitalmente Fonte : http://www.iconenet.com.br/cd/cd_guia.pdf
  25. 25. 25 A figura 3.2 demonstra como é feita a recepção de um documento assinado digitalmente pelo usuário A. Inicialmente, o receptor (usuário B), recebe o documento original mais a assinatura digital e aplica o mesmo algoritmo de hash utilizado pelo Usuário A no documento original recebido, com isso ele terá o resumo deste documento. Em seguida, a assinatura digital que veio anexa ao documento é decifrada com a chave pública do emissor (usuário A), e com isso é recuperado o resumo do documento gerado pelo o usuário A [1]. A autenticidade do documento será garantida se a decifragem da assinatura digital for feita com sucesso, isto porque a decifragem utilizou a chave pública correspondente à chave privada do usuário A, que garante que foi ele mesmo que enviou o documento assinado. De posse do resumo do documento gerado pelo o usuário A, o usuário B compara o seu resumo com o resumo do usuário A. Se os dois resumos forem diferentes é porque documento original foi modificado ou outra pessoa assinou o documento, do contrário, o documento estará íntegro. A comparação dos resumos garantirá a integridade de um documento ou de uma mensagem. Figura 3.2 - Processo de recepção de um documento assinado digitalmente Fonte : http://www.iconenet.com.br/cd/cd_guia.pdf
  26. 26. 26 O processo de assinatura digital não garante a confidencialidade de um documento ou de uma mensagem, pois um intruso poderá utilizar a chave pública de um emissor e capturar a informação. A figura 3.3 mostra como garantir a confidencialidade com assinatura digital, o processo de gerar a assinatura digital é idêntico ao já explicado, o que é feito a mais é criptografar o documento assinado do usuário A com a chave pública do usuário B [6]. Em seguida, na recepção do documento, só o usuário B terá acesso ao conteúdo do documento devido que apenas ele tem a chave privada correspondente a sua chave pública disponível, isto garantirá a privacidade no documento. Com isso, além da autenticidade, integridade e o não repúdio já obtidos pelo processo normal de assinatura digital, teremos também, agora, a confidencialidade de uma mensagem ou de um documento assinado digitalmente por uma determinada pessoa. Figura 3.3 - Processo de assinatura digital com confidencialidade ASSINATURA DIGITAL COM CONFIDENCIALIDADE Usuário A (Emissor) Usuário B (Receptor) Documento Algoritmo Original Hashing YW2U85P398YGH7A Resumo da Mensagem Chave Privada Algoritmo Resumo da Mensagem do usuário B Hashing Documento YW2U85P398YGH7A Original COMPARA Chave Privada Assinatura Documento Documento YW2U85P398YGH7A do Usuário A Digital Assinado Assinado Assinatura Digital Resumo da Mensagem Chave Pública Chave Pública do usuário B do usuário A
  27. 27. 27 4. CERTIFICADO DIGITAL O certificado digital é um documento eletrônico e uma tecnologia de segurança que serve para identificar pessoas e entidades no mundo digital. Um certificado digital é associado a um nome e a vários outros atributos de uma pessoa ou instituição a uma chave criptográfica pública. O certificado digital é considerado como uma identidade digital no mundo computacional. Esta tecnologia usa técnicas de criptografia assimétrica que utiliza um par de chaves eletrônico, uma chave privada e uma pública. A chave privada ou a chave secreta terá uma senha para acessá-la e que deve ser de posse apenas do dono do certificado que irá utilizá-la para assinar mensagens e documentos eletrônicos e a chave pública será utilizada por todos que irão se comunicar de forma sigilosa com o dono do certificado, seja uma pessoa física ou jurídica. Ao utilizar uma chave pública, uma entidade precisa ter a garantia de que esta chave pertence realmente à entidade que irá se comunicar e que possui a chave privada correspondente. Isto porque qualquer entidade pode gerar um par de chaves relacionadas e deixar pública uma delas [13]. No entanto, um emissor de uma mensagem precisa saber se a chave pública que está utilizando para assinar uma mensagem ou um documento é realmente de quem se diz dono e isto faz eliminar a possibilidade de usar a chave pública disponibilizada por uma pessoa não autorizada ao acesso da informação. Somente a assinatura digital aplicada em mensagens e documentos eletrônicos não garante de forma segura a autenticidade, a integridade e o não repúdio, mas quando utilizada através de um canal seguro de comunicação criado no uso de um certificado digital estes serão efetivamente garantidos. Estas propriedades de segurança citadas acima serão completamente garantidas se no processo de comunicação realizado entre duas entidades, ambas as partes possuam certificados digitais. Estes certificados deverão estar assinados e registrados por uma autoridade confiável que é chamada de autoridade certificadora, como veremos no item 4.1. Com o certificado digital é ainda possível garantir a confidencialidade que antes com a assinatura digital só poderia ser feita aplicando na assinatura a
  28. 28. 28 criptografia com a chave pública do destinatário, e que mesmo assim não garantia uma total segurança devido à inexistência de um canal de comunicação seguro. Para garantir a confidencialidade de uma informação utilizando certificado digital, uma pessoa usará o certificado do destinatário para utilizar a chave pública deste certificado para criptografar a informação e enviá-la. Em seguida, quando o destinatário, dono do certificado, receber esta informação com o seu conteúdo cifrado terá que usar a sua chave privada, pois só ele poderá decifrar o conteúdo já que somente ele terá acesso à chave privada correspondente a chave pública [5]. A assinatura digital associada a um certificado dará uma total credibilidade e confiança devido ao canal único e seguro de comunicação criado durante a troca de mensagens e documentos, esta segurança será possível através do protocolo SSL (Secure Sockets Layer) de cifragem de 128 bits, que é a mais moderna tecnologia de criptografia aplicada durante uma comunicação na internet e que será abordada mais adiante. Diante desta situação, se faz necessário e percebe-se a importância de utilizar um certificado digital em aplicativos de softwares. Este certificado será emitido e assinado por uma autoridade confiável e esta disponibilizará ao proprietário, através deste certificado, o par de chaves. O proprietário, de posse do seu certificado, poderá utilizar seu par de chaves de forma confiável, seja para assinar mensagens e documentos, através do processo de assinatura digital, ou para disponibilizar a sua chave pública para aqueles que desejam enviar informações sigilosas (autenticação do cliente). O uso de um certificado assinado por uma autoridade certificadora dará ao seu proprietário validade jurídica em suas transações eletrônicas, considerando também que assinatura digital utilizada nestas transações terá a mesma validade jurídica de uma assinatura feita no papel. Existem padrões de certificados digitais, o predominante atualmente é o X.509, que já se encontra na versão 3. Os campos existentes em um certificado padrão X.509 são: • Número da versão – representa o número da versão do certificado que atualmente é a 3; • Número de série – este campo fornece uma identificação única para cada certificado emitido por uma autoridade certificadora e esta deve garantir que não existam dois certificados com o mesmo número de série;
  29. 29. 29 • Algoritmo de Assinatura – representa o algoritmo de hash utilizado na assinatura. O resumo da mensagem criado por uma função hash, MD5 ou SHA1 que são os mais conhecidos, é cifrado com a chave privada para gerar a assinatura; • Nome – indica o nome do proprietário do certificado; • Nome do Emissor – representa o nome da autoridade certificadora emissora do certificado; • Período de Validade – determina o intervalo de tempo em que o certificado é válido; • Chave Pública – este campo possui a chave pública e a identificação do algoritmo do certificado. Esta chave é geralmente gerada utilizando algoritmo de criptografia assimétrico de chave pública RSA; • Assinatura Digital da CA – este campo indica a assinatura digital da autoridade certificadora que emitiu o certificado. 4.1 Autoridades Certificadoras Da mesma forma que temos confiança em órgãos que emitem documentos pessoais que possuem validade jurídica como, por exemplo, uma carteira de identidade e um CPF, devemos também confiar em entidades que façam a emissão de certificados digitais para que tenhamos garantia, credibilidade e segurança na obtenção dos mesmos. Estas entidades confiáveis são chamadas de autoridades certificadoras (AC). Os certificados digitais são gerenciados através de uma PKI (Public Key Infrastrusture) ou ICP (Infra-estrutura de chave pública) que é um ambiente a ser criado pelas autoridades certificadoras e que é composto por técnicas, práticas e procedimentos necessários para operar um sistema de certificação baseado em criptografia de chave pública de forma confiável e segura [14]. Além de montar uma estrutura de segurança e de confiabilidade na emissão de certificados digitais, uma ICP deve contar ainda com leis e decretos elaborados pelo governo federal para dar a legalidade no negócio digital,
  30. 30. 30 possibilitando assim fazer o uso da Internet para realizar transações com informações sigilosas entre pessoas físicas e jurídicas, principalmente as que movimentam dados financeiros. Diante da importância de ser ter uma ICP no Brasil para regularizar a certificação digital, o governo brasileiro criou através da medida provisória - MP 2200-2, de 24 de agosto de 2001, uma estrutura hierárquica denominada ICP – Brasil que define as devidas responsabilidades de cada entidade desta estrutura [1]. 4.1.1 Estrutura Hierárquica da ICP-Brasil Abaixo, a figura 4.1 mostra a arquitetura da ICP-Brasil, onde temos: • O comitê gestor que foi criado para estabelecer os procedimentos e as regras que serão adotadas pelas autoridades certificadoras e que caso não sejam cumpridas poderão perder o credenciamento e não fazer mais parte da ICP-Brasil; • A autoridade certificadora raiz que auto-assina seu certificado e está no topo da hierarquia e quem gerencia é o Instituto Nacional de Tecnologia da Informação (ITI). A AC raiz tem como funções: assinar, emitir, distribuir, revogar, gerenciar os certificados de autoridades certificadoras de nível inferior ao seu, dando o direito a estas autoridades de assinarem os certificados finais, ou seja, os certificados dos usuários. Deve também gerenciar a lista dos certificados emitidos, revogados e vencidos, fazer a fiscalização e auditoria das autoridades certificadoras, autoridades de registros e prestadores de serviços habilitados na ICP-Brasil. A AC raiz não emite certificados para o usuário final e nem possui uma autoridade de registro associada, pois ela mesma faz este papel [16]; • As autoridades certificadoras que poderão ser entidades privadas ou públicas e tem como principal função emitir certificados digitais associando a uma chave pública do seu proprietário, após ter feito o credenciamento com a AC raiz. Elas têm ainda autorização para
  31. 31. 31 assinar, emitir, distribuir, revogar e gerenciar certificados das autoridades intermediárias e usuários finais. Estas ACs devem também divulgar aos usuários as listas de certificados revogados e manter registros de suas operações [1]. Atualmente são oito as autoridades certificadoras credenciadas pela ICP-Brasil, são elas: SERPRO, Caixa Econômica Federal, SERASA, Receita Federal, Certisign, Presidência da República e Autoridade certificadora da Justiça; • As autoridades de registros que são autoridades associadas às autoridades certificadoras e têm com funções: identificar e cadastrar usuários, de forma presencial, encaminhar solicitações de certificados para as ACs e deve também armazenar os registros das suas operações [1]. Figura 4.1 - Modelo da arquitetura da ICP-Brasil Fonte : http://www.iconenet.com.br/cd/cd_guia.pdf O custo para uma entidade que deseja se credenciar à ICP-Brasil é alto e a depender dos privilégios de credenciamento o custo ainda será maior. Poderão se credenciar nos níveis subseqüentes a autoridade certificadora raiz, como as autoridades certificadoras, autoridades intermediárias, autoridades de registros e prestadores de serviço de suporte a ICP-Brasil.
  32. 32. 32 Além deste custo alto de credenciamento, a entidade também deverá investir, às vezes, até milhões, em hardware, software e infra-estrutura de rede e ainda a entidade passará por um processo de auditoria prévia para análise da sala cofre, verificação do ambiente físico, a rede de dados, a infra-estrutura, o ambiente de softwares instalados e configurações dos mesmos e ainda deverá ser avaliada a capacitação técnica e a segurança existente no ambiente de trabalho [16]. Na internet existem softwares de autoridade certificadora que podem ser instalados em empresas para a emissão de certificados que poderão ser viáveis para uso interno ou seja, quando estas não fazem transações on-line com outras entidades. Porém, é importante analisar o custo benefício antes de serem utilizados, pois se é para utilizar um sistema de certificação digital seguro e que tenha legalidade, esta deverá ser adquirida através de autoridades certificadoras que fazem parte da ICP-Brasil. 4.2 Modelos de Certificado Digital Para um melhor entendimento quanto aos modelos existentes de certificado digital, serão mostrados a seguir duas categorias. A primeira categoria é relacionada quanto aos modelos de armazenamento e a segunda com relação aos modelos de aplicações de certificado digital. 4.2.1 - Modelos de Armazenamento Atualmente, os dois certificados mais comuns são o A1 e o A3. O A1 é um certificado de software que é instalado no computador e seus dados serão armazenados na memória do computador, a sua validade será de um ano contado a partir da data de emissão do certificado. Este tipo de certificado possibilita que seus dados, inclusive sua chave privada, sejam exportados para que ele seja distribuído em outros computadores
  33. 33. 33 que o proprietário deseja utilizá-lo, com isso ele estará assumindo os riscos da distribuição do seu certificado. A sua cópia também será útil para no caso de formatação de máquina ou reinstalação do sistema operacional para que o certificado possa ser reinstalado. A chave pública por sua vez estará disponível na internet e a chave privada apenas no computador onde foi instalado o certificado [9]. É importante que o software de geração de par de chaves ofereça proteção para acessar a chave privada através de senha, para que caso ocorra perda ou roubo da chave privada esta esteja cifrada, seja no A1 em caso de cópia do certificado que contém a chave privada ou no A3 se alguém perder ou for roubado o dispositivo que contém o certificado com a chave privada armazenada [4]. Já o A3 é um tipo de certificado armazenado em um hardware criptográfico como o SmartCard, que são cartões inteligentes e são parecidos com cartões de créditos tradicionais ou através de um Token USB. Neste tipo de certificado os dados serão armazenados em um dispositivo, por isso é mais seguro do que o A1, e a sua validade é de até 3 anos [8]. O A3 é um tipo de certificado mais seguro pelo motivo de que o par de chaves gerado, a chave pública e a privada, será gravado apenas no dispositivo e não poderá ser exportado e nem ser retirado. Apenas a chave pública será disponibilizada e a chave privada estará armazenada no dispositivo e para ser acessada deverá estar protegida por senha. Com isso torna-se obrigatória a presença do dispositivo para realização da assinatura digital em documentos para permitir o acesso a sistemas e ainda para dar autorização de transações eletrônicas [9]. A senha de proteção da chave privada, em ambos os tipos de certificados, não pode ser compartilhada, pois ela será utilizada apenas pelo proprietário do certificado e deve-se ter cuidado para não deixar cair nas mãos de pessoas não autorizadas. Por este motivo, não se deve também instalar certificados com a chave privada em computadores de uso público, para que pessoas mal intencionadas não façam um mau uso do certificado fazendo se passar de proprietário do mesmo. Abaixo serão mostradas figuras de certificados do tipo A3 armazenados em dispositivos de hardware criptográfico do tipo SmartCard que com eles será possível gerar as chaves criptográficas e armazená-las dentro de um ambiente seguro, uma vez que as operações criptográficas serão feitas dentro do próprio dispositivo. Eles possuem um microprocessador com memória capaz de armazenar
  34. 34. 34 e processar diversas informações. Estes cartões são lidos através de um dispositivo, chamado leitora, que será acoplada ao computador [4]. As figuras 4.2 e 4.3 são de cartões demonstrativos emitidos pela Certisign que é uma autoridade certificadora privada do país e que também é habilitada pela Receita Federal para emissão do CPF e CNPJ eletrônico. Figura 4.2 - Dispositivo SmartCard com CPF Digital Fonte : http://www.certisign.com.br/produtos/ecpf/e-cpf.jsp Figura 4.3 - Dispositivo SmartCard com CNPJ Digital Fonte : http://www.certisign.com.br/produtos/ecnpj/e-cnpj.jsp Os tipos de certificado e-CPF e o e-CNPJ poderão ser emitidos tanto em formato de A3 como também em A1.
  35. 35. 35 A figura 4.4 representa um cartão de identidade digital que também é emitido pela Certisign e é uma credencial eletrônica mais completa e segura emitida atualmente no Brasil. Figura 4.4 - Dispositivo SmartCard com Identidade Digital Fonte : http://www.certisign.com.br/produtos/id/id_aplicacoes.jsp A figura 4.5 representa o dispositivo de hardware criptográfico token USB. O uso deste dispositivo é bem simples, basta conectá-lo a um computador que possui uma porta USB, em seguida deve ser instalado o seu driver e um software gerenciador criptográfico. Após ter feitas estas etapas o token USB poderá ser conectado ao computador que será reconhecido pelo sistema operacional. Figura 4.5 - Dispositivo Token USB Fonte : http://www.certisign.com.br/produtos/ecpf/pop_faq.jsp
  36. 36. 36 A segurança de tecnologias de certificação digital está diretamente ligada a forma com que a chave privada está protegida, por isso que a tendência para o uso de certificados que são armazenados em dispositivos de hardware criptográfico aumentem a cada dia. Apesar de que o custo para adquirir certificados armazenados em hardware ainda é elevado com relação aos certificados armazenados em software, com o tempo o mercado deverá estar investindo para que estes dispositivos se tornem mais acessíveis à população [3]. 4.2.2 Modelos de Aplicação de Certificado Digital Quanto às aplicações de certificação digital as mais conhecidas e utilizadas no mercado são: • Certificado de e-mail seguro pessoal; • Certificado de e-mail seguro corporativo; • Certificado para servidor web; • Solução corporativa de certificados que é conhecida como PKI gerenciada; • Certificado de CPF eletrônico; • Certificado de CNPJ eletrônico; • Certificado de identidade digital. Ainda existem outras aplicações de certificação digital no mercado que são utilizadas para fins específicos, mas que neste projeto não convém citá-las. A seguir será feita uma breve descrição de cada uma das aplicações de certificados digitais citadas acima. Um certificado de e-mail seguro pessoal, para pessoa física, possibilita que uma determinada pessoa assine digitalmente uma mensagem eletrônica para que o destinatário identifique a origem da informação, ainda permite que informações sejam criptografados utilizando o certificado digital do destinatário, ou seja, cifrar as mensagens eletrônicas utilizando a chave pública do destinatário. Com estes recursos será garantida que as mensagens confidenciais ou e-mails com os arquivos em anexo tenham a identificação de um remetente, mantenha a integridade
  37. 37. 37 e o sigilo das mensagens. Este certificado é recomendado para troca de informações pessoais [14]. Um certificado de e-mail seguro corporativo, para pessoa jurídica, também oferece os mesmos recursos de proteção do e-mail seguro pessoal, a única diferença é que ele será direcionado para organizações. Um certificado de servidor web está a cada dia sendo mais utilizado na internet, ele serve de identificação e autenticação de sites na web. Ele permite que um determinado usuário confira a autenticidade de um site em que está navegando, garantindo que o site é verdadeiro e não uma cópia disponibilizada por fraudadores, além disso, ainda será criado um canal criptográfico seguro que protegerá o sigilo e a integridade das informações durante a comunicação entre o navegador web do usuário e o servidor do site [14]. Um exemplo prático do uso de um certificado de autenticação de servidor são os serviços on-line que os bancos oferecem para seus clientes. O banco disponibiliza na internet seus serviços através de um aplicativo de software que permitirá o acesso ao banco. Um banco utiliza certificado digital para certificar-se que o cliente é o verdadeiro dono de uma determinada conta bancária que será acessada por ele. Por outro lado o banco apresentará ao seu cliente os dados do seu certificado digital para que sejam validados como, por exemplo, a sua validade e autoridade certificadora que assinou e emitiu o certificado, isto garantirá ao cliente que ele estará usando um ambiente seguro para acessar e movimentar a sua conta bancária. A figura 4.6 mostra um exemplo de certificado de servidor web existente no Internet Banking da Caixa Econômica Federal, que foi retornado para máquina cliente via SSL, assunto a ser abordado mais adiante, após clicar no cadeado de segurança localizado na parte inferior do navegador da Microsoft, o Internet Explorer. Nesta interface são mostradas as informações básicas de um certificado e o caminho de certificação que valida o mesmo. Neste caso a autoridade certificadora que emitiu o certificado foi a AC CAIXA IN que é uma autoridade certificadora intermediária da caixa cujo certificado foi emitido pela AC CAIXA que é uma das oito autoridades certificadoras que atualmente fazem parte da ICP-Brasil e que o seu certificado foi emitido pela autoridade certificadora raiz do Brasil.
  38. 38. 38 Figura 4.6 - Exemplo de certificado de servidor web Alguns sites exigem que as pessoas possuam também um certificado digital instalado no seu computador para permitir acesso às áreas restritas e outros, como exemplo de bancos, que distribuem gratuitamente certificados a seus clientes como opção de garantir uma maior segurança no acesso e movimentação dos dados de uma conta bancária. Já a solução corporativa de certificados que é chamada de PKI gerenciada, para pessoa jurídica, pode ser utilizada para proteger informações que trafegam em intranets, extranets, Redes Privadas Virtuais (VPN) e aplicativo de comércio eletrônico em organizações através da moderna tecnologia de Infra- Estrutura de Chave Pública (PKI). Ao invés de implantar PKI própria onde teria um custo alto de implantação, uma empresa poderá adquirir esta solução, onde terá poder para controlar a emissão e gerenciamento de certificados próprios [14]. Os certificados de CPF eletrônico (e-CPF) e de CNPJ eletrônico (e-CNPJ) são documentos eletrônicos em forma de certificado digital que garantem autenticidade e integridade na comunicação entre pessoas físicas ou jurídicas e a Secretaria da Receita Federal. E o certificado de identidade digital, por sua vez, permite o acesso de diversos serviços oferecidos pelo governo através da internet, que facilitará a vida de
  39. 39. 39 cada cidadão brasileiro. Pois, os mesmos processos que hoje são feitos em documentos de papel poderão ser executados utilizando o meio digital. Com este cartão ainda será possível realizar a assinatura digital, o sigilo dos documentos e os contratos digitais, e além disso possibilitará utilizar outros serviços on-line de forma segura [15]. 4.3 Renovação e Revogação de um Certificado Após expirar a data de validade de um certificado e caso a chave privada não esteja comprometida, o usuário do certificado poderá optar por adquirir um novo certificado ou manter os dados do certificado ou até mesmo o par de chaves. Mas, independente da situação, será importante a substituição do certificado, pois o campo validade de um certificado existe para que ele seja expirado e a renovação do mesmo seja feita. Com isso um novo par de chaves será gerado com uma tecnologia de criptografia mais moderna e os dados de um usuário de um certificado serão também atualizados, se necessário. Além disso, uma nova relação de confiança será criada entre o usuário e a autoridade certificadora [4]. Se houver suspeita de que a chave privada esteja comprometida ou, por exemplo, se um funcionário de uma empresa que possuía um certificado tenha sido demitido, será necessário que seja solicitada a revogação do certificado à autoridade certificadora responsável pela emissão e registro do mesmo. No caso de renovação, seja por qualquer motivo, um novo certificado poderá ser emitido para que seja gerado um novo de par de chaves e no caso do A3 este par de chaves deverá ser adquirido e armazenado no hardware já existente. As assinaturas digitais que forem realizadas através de um certificado digital serão invalidadas a partir do momento que o certificado for expirado ou revogado. Apenas estarão válidas as assinaturas feitas antes da expiração ou da revogação do certificado, para isso, técnicas de inclusão de data e hora na assinatura poderão ser adotadas para comprovar o período em que o documento foi assinado [4].
  40. 40. 40 4.4 Protocolo SSL Protocolos de segurança são utilizados em conjunto com os certificados digitais para garantir que durante um processo de envio e de troca de informações seja criado um canal criptográfico seguro de comunicação entre as partes. Estes protocolos são o S/MIME (Secure Multi-Purpose Internet Messaging Extensions) que é utilizado em correio eletrônico e que permite que os e-mails assinados e criptografados sejam transmitidos com segurança e o protocolo SSL (Secure Socket Layer) que é utilizado em sites web para permitir em transações eletrônicas a criptografia dos dados trafegados e a autenticação do servidor. A autenticação do cliente poderá também ser feita caso o servidor faça o pedido. O protocolo SSL será o nosso foco principal por ser a tecnologia utilizada nos certificados digitais aplicados nas páginas web da maioria das empresas disponíveis na internet que movimentam informações sigilosas. Inicialmente a versão SSL 2.0 suportava apenas autenticação do servidor, mas no momento na versão 3.0 já suporta tanto a autenticação do cliente como a do servidor [16]. Quanto ao nível de codificação, atualmente os certificados digitais para servidor web de 128 bits em diante são considerados os mais seguros e os mais utilizados pelas empresas devido ao forte nível de criptografia. Também estão disponíveis certificados SSL de níveis de codificação abaixo de 128 bits, como por exemplo os de 40 bits, que possuem um custo mais baixo do que os de 128 bits em diante e podem ser utilizados em situações em que não se exige um alto nível de segurança. Isto porque com este nível de encriptação já existe a possibilidade de decodificar informações trafegadas em uma comunicação. Pela maior segurança oferecida pelos certificados de 128 bits, os navegadores precisam estar atualizados com este nível de codificação e, por questão de segurança, não podem estar com um nível mais baixo daquele utilizado pelo certificado do servidor. Isto se deve ao fato que a codificação mais baixa será priorizada e considerada durante uma sessão estabelecida entre o cliente e o servidor e com isso terá uma perda de segurança [17]. Para identificar que um site na web está utilizando protocolo SSL e consequentemente um certificado digital, um cliente deverá verificar se na barra de endereços da página acessada possui “https://” ao invés de “http://” que é o padrão.
  41. 41. 41 Além disso, deve-se verificar se há um cadeado fechado no lado inferior direito da página acessada no caso do navegador da Microsoft, o Internet Explorer, conforme figura 4.7 mostrada abaixo que ainda mostra que é uma sessão SSL que foi estabelecida com o nível de codificação de 128 bits. Uma página padrão da web que utiliza ”http://” utiliza a porta 80 do servidor web e a página com “https://” utiliza o protocolo SSL e a porta 443 de um servidor web. A identificação de um site seguro utilizando SSL, dará a um cliente a confiança necessária para ele poder realizar as transações eletrônicas com a garantia de que caso as informações trafegadas durante uma comunicação sejam interceptadas, elas estejam totalmente cifradas e impossíveis de serem identificadas ou decifradas. Figura 4.7 - Uso do protocolo SSL no navegador Internet Explorer O cliente ainda poderá utilizar o cadeado de identificação de uso de protocolo SSL para verificação dos dados do certificado digital utilizado no site da web, dentre estes dados o cliente poderá verificar, por exemplo, a validade do certificado e a autoridade certificadora responsável pela sua emissão. Algumas autoridades certificadoras ainda disponibilizam na página “https” um selo de identificação de site seguro, para que um usuário possa através dele conferir as informações essenciais de um certificado digital em tempo real. A figura 4.8 mostra um selo de identificação de site seguro que a Certisign disponibiliza como uma proteção extra aos seus clientes para serem exibidos na página “https://" onde será feita a autenticação do servidor. Figura 4.8 - Selo Certisign de identificação de site seguro Fonte : http://www.certisign.com.br/suporte/config_instala_selo.jsp
  42. 42. 42 Durante uma sessão SSL, os dados transitados são criptografados e descriptografados, além disso, o uso de SSL aumenta a quantidade de dados transmitidos pela inclusão de novos pacotes. Com isto a troca de informações entre o cliente e o servidor será mais lenta [16]. Percebe-se assim que o uso do SSL envolve um processamento extra durante uma comunicação e por este motivo devem ser analisadas sempre quais páginas web deverão realmente conter a proteção SSL. A prioridade de proteção será dada às páginas que irão trafegar informações confidenciais e que precisam garantir segurança. Criptografias de chave pública e simétrica serão utilizadas para garantir o sigilo das informações trafegadas durante uma sessão SSL. A chave pública do certificado será utilizada para cifrar a chave simétrica que será responsável pela troca segura de informações durante uma sessão SSL. Os dados que trafegam entre o cliente e o servidor são criptografados com um algoritmo simétrico, como por exemplo o DES, RC4 e o AES e que por sua vez são mais rápidos do que os algoritmos de chave pública [18]. 4.4.1 Processo de estabelecimento de uma sessão SSL Uma sessão de SSL será iniciada sempre com uma troca de mensagens chamada handshake por SSL. O Protocolo Handshake é a principal parte do SSL e é feito em duas partes. Inicialmente é feita a escolha da chave entre o cliente e o servidor, a autenticação do servidor e a troca da chave e depois é feita a autenticação do cliente, se solicitada pelo servidor, e o fim do handshake. Após o handshake estar completo, a transferência de dados entre aplicações poderá ser iniciada [18].
  43. 43. 43 Abaixo serão mostrados os passos que são executados para estabelecer uma sessão SSL utilizando certificado digital. Figura 4.9 - Processo de handshake por SSL CLIENTE SERVIDOR (1) (2) (3) (4) (5) (6) (7) 1. Uma sessão SSL será sempre iniciada pelo lado cliente quando é feito inicialmente o envio de uma solicitação de uma sessão segura, ou seja, quando o cliente acessa uma página “https://” estará sendo feito um pedido de certificado digital do servidor. Além disso, o cliente enviará o número da sua versão SSL, as cifras simétricas suportadas para troca de chaves, como por exemplo RC4 e AES, e ainda outras informações que o servidor precisa serão enviadas para se comunicar com o cliente utilizando SSL. 2. O servidor responde retornando a cifra escolhida e informações específicas de sessão que serão utilizadas pelo cliente para a comunicação com o servidor. Quanto às cifras disponíveis pelo cliente e o servidor, ambos deverão ter pelo menos uma cifra compatível e caso tenham mais de uma, será escolhida pelo servidor aquela mais segura, isto é chamado de acordo de chaves.
  44. 44. 44 3. O servidor envia ao cliente seu certificado digital e caso seja necessária a autenticação do cliente, o servidor enviará um pedido de certificado ao cliente. 4. O cliente recebe o certificado digital do servidor e confere se o certificado provém de uma autoridade de certificação segura através do certificado raiz desta AC instalado no cliente, se o certificado expirou ou ainda não é válido e se o nome do site do certificado é igual ao site acessado, pois um servidor intruso poderá interceptar a solicitação do cliente e enviar o seu certificado com sua chave pública e se comunicar com o cliente fazendo se passar do servidor verdadeiro e acessar informações confidenciais, por isso que é feita a comparação dos sites. Se ocorrer pelo menos uma dessas situações, o cliente receberá uma mensagem e o usuário terá a opção de aceitar a continuidade da negociação SSL e acessar o site ou desconfiando do site e do certificado digital recebido poderá não aceitar o acesso finalizando assim a conexão. Se a negociação SSL prosseguir o cliente extrairá a chave pública do certificado do servidor. 5. O cliente irá gerar uma chave de sessão onde será criptografada com a chave pública do certificado do servidor e em seguida enviada ao mesmo. 6. O servidor descriptografa a chave de sessão com a sua chave privada do seu certificado associada a chave pública que foi disponibilizada e informa ao cliente que a partir deste momento as mensagens serão enviadas encriptadas com a chave de sessão. 7. A partir daí a sessão será iniciada e um canal seguro de comunicação será criado. O cliente e o servidor utilizarão a chave de sessão para encriptar e desencriptar os dados trafegados entre si e caso o cliente também possua um certificado digital será capaz de realizar assinaturas digitais em mensagens e documentos através deste canal seguro, isto enquanto durar a sessão. É importante perceber que antes a assinatura digital e a confidencialidade de uma informação poderia ser feita sem uso de uma sessão SSL e certificado digital, mas o problema é que estes procedimentos não eram feitos através de um
  45. 45. 45 canal seguro e não eram aplicados os passos acima durante a comunicação entre duas partes. O SSL não oferece proteção dos dados quando eles estiverem ainda na origem e quando chegarem ao destino, ou seja, não protege os dados locais, apenas garantirá a segurança dos mesmos durante a transmissão. Além disso o SSL não garantirá também o não repúdio, sendo assim necessário o uso da assinatura digital para provar a execução da transação e o envio da informação. Quando a assinatura digital, o certificado digital e o protocolo SSL forem juntos utilizados, será possível garantir o completo ciclo de segurança que envolve a autenticidade, a integridade, a confidencialidade e o não-repúdio de mensagens e documentos trafegados em um ambiente web até o seu destino. 4.5 Requisição e Instalação de um Certificado Digital Existem outras soluções de emissão de certificado digital onde não há a necessidade de comprar de uma autoridade certificadora, estas soluções permitem que certificados auto-assinados sejam criados e instalados e sejam utilizados para assinar documentos, podendo ainda contar com o recurso de proteção da chave privada no momento da autenticação e o uso do protocolo SSL. Quanto à criação e à instalação de um certificado digital através de uma autoridade certificadora será feita inicialmente com a geração de um arquivo texto chamado CSR (Certificate Signing Request), que significa Pedido de Assinatura de Certificado e que deve ser gerada através de um software de servidor web. Um CSR é um arquivo criptografado que possui a chave publica, um nome, a localidade e o endereço web que utilizará o certificado. Na solicitação do certificado, a chave privada do certificado será armazenada no computador em que foi feita a solicitação e a CSR será encaminhada à autoridade certificadora através de formulários disponibilizados na internet que utilizarão páginas “https://” que garantirá a segurança dessas informações. Além do conteúdo da CSR, o responsável pela requisição do certificado informará também outros dados necessários para o processo de emissão do certificado. Após ser feita a validação das informações enviadas pelo responsável, a AC enviará um arquivo contendo informações que serão utilizadas para instalação
  46. 46. 46 final do certificado no servidor web, bem como as senhas que serão utilizadas para finalização do processo de instalação do certificado e para manutenção deste no site da autoridade certificadora que emitiu o certificado. O processo de requisição de um certificado digital para instalação será necessário apenas quando este for adquirido através de uma autoridade certificadora, pois quando for uma solução alternativa, onde não se quer gastos ou a depender da necessidade o certificado poderá ser criado e manipulado por uma pessoa física ou jurídica sem interferência de uma autoridade certificadora que faça parte ou não da ICP-Brasil.
  47. 47. 47 5. TECNOLOGIAS DISPONÍVEIS EM JAVA A Plataforma Java dispõe de um framework chamado JCA (Java Cryptography Architecture) que contém um conjunto de classes com funcionalidades criptográficas para serem utilizadas em aplicações que necessitem de segurança, como as que utilizam certificado digital e assinatura digital. Este framework pertence à API (Application Programming Interface) básica do Java e integra funcionalidades de segurança para aplicações desenvolvidas nesta linguagem e, que por sua vez, tem como principal vantagem a independência de plataforma. A JCA é uma especificação ou uma referência que contém funcionalidades que podem possuir implementações diferentes e que entre elas haverá compatibilidade desde que sigam esta especificação. Além disso, ainda existe a possibilidade de extensão, que significa acrescentar ao framework novos serviços, como no caso da JCE (Java Cryptography Extension) que é uma extensão da JCA e que incorporam técnicas criptográficas com recursos mais avançados [19]. 5.1 JCA e JCE O JCA usa o conceito de Provider Criptográfico que é um pacote de classes que fornece a implementação concreta dos serviços definidos na API. A figura 5.1 mostra que uma aplicação pode utilizar o JCA e/ou JCE, mostra também o provider da própria SUN para JCA e para o JCE, SUN Provider e SunJCE Provider, e ainda um outro provider qualquer, Acme Provider, que implementa tanto o JCA como o JCE.
  48. 48. 48 Figura 5.1 - Arquitetura da JCA Fonte : http://www.di.uminho.pt/~jmv/CriptografiaAplicada/CA-Pratica-I.pdf O JDK (Java Development Kit) da SUN já inclui no seu pacote java.security e no pacote javax.crypto a implementação de um provider da especificação JCA e um provider da JCE e estes incluem implementações de : • Algoritmos de assinatura digital DSA e RSA; • Algoritmos de hash MD5 e SHA1; • Gerador de pares de chaves DSA e RSA; • Classe para uso de certificados X. 509; • Um KeyStore (repositório de certificados) chamado “JKS” (KeyStore da SUN). O acesso a um certificado no KeyStore é feito através de um “Alias” que é um nome dado ao certificado no momento da sua criação e que identificará o certificado. Tanto o acesso a um KeyStore quanto a uma chave privada de um certificado será feito através de senha de proteção. No JDK existe uma ferramenta de linha de comando chamada Keytool para criação e manipulação de certificados em um KeyStore. A listagem 5.1 mostra um exemplo do uso desta ferramenta para criação de um certificado. Listagem 5.1 - Criação de um KeyStore com Keytool keytool -genkey -alias sam -keyalg RSA -keysize 2048 -sigalg "SHA1withRSA" -keypass sam123 -storepass sam123 -keystore C:/samuel.jks -dname "cn=SAMUEL, ou=Monografia, o=SAMUEL, l=Aracaju, S=SE, c=BR" -validity 365
  49. 49. 49 Os argumentos passados para o keytool são: -genkey : indica que será gerada a chave; -alias : é o nome das chaves que serão armazenadas no KeyStore; -keyalg : indica qual o algoritmo para geração do par de chaves; -sigalg : indica o algoritmo de assinatura a ser utilizado; -keypass : indica a senha de proteção da chave no KeyStore; -storepass : é a senha de proteção do KeyStore; -keystore : indica onde as chaves serão armazenadas; -dname : nome da entidade que vai gerar o par de chaves. Exemplo: cn = Nome Comum, ou = Unidade Organizacional (departamento ou divisão), o = Nome da Organização, l = localidade (cidade), s = Estado, c = País; Além de outras funcionalidades, o Keytool permite que certificados possam ser exportados e importados para um repositório JKS. 5.2 Padrão JKS e o PKCS#12 Os providers implementados pela SUN do JCA e JCE possibilitam manipular arquivos de certificados do tipo PKCS#12, com a extensão .pfx ou .p12. PKCS significa Public-Key Cryptography Standards, que na prática é um conjunto de padrões de tecnologias de criptografia que utiliza o conceito de chave pública, e 12 porque é um dos padrões de certificado utilizado pelos navegadores web para troca de informações pessoais, incluindo a autenticidade do servidor. Este padrão junto com o JKS serão os tipos de certificado a serem abordados. A importação e exportação de uma chave pública no formato X509 são possíveis por estes dois tipos de certificados, a partir de um repositório JKS. Estes dois tipos de arquivos poderão também ser lidos e manipulados através dos providers acima citados, para que sejam extraídos os dados do certificado e em específico a chave privada que será aplicada na assinatura digital de mensagens e de arquivos.
  50. 50. 50 A listagem 5.2 mostra um exemplo de uma importação de um certificado no formato X.509 com a extensão .cer, chamado samuel_certisign.cer, que foi exportado a partir de um certificado PKCS#12 e emitido pela autoridade certificadora Certisign, como certificado de teste, e instalado no navegador da Microsoft, o Internet Explorer. Este certificado foi importado para dentro do KeyStore criado na listagem 5.1 com o nome samuel.jks, o nome do alias para importação será “sam1”, como na listagem 5.1 já foi criado um certificado com o nome do alias “sam” e este não é permitido que se repita no mesmo arquivo JKS. Listagem 5.2 - Importação de um certificado X.509 para um KeyStore JKS keytool -import -alias sam1 -file C:/ samuel_certisign.cer -keystore C:/samuel.jks -storepass sam123 Em seguida a listagem 5.3 mostra um exemplo de uma exportação de um certificado digital no formato X.509 que foi armazenado no KeyStore samuel.jks com o alias “sam1”. Listagem 5.3 - Exportação de um certificado X.509 do KeyStore JKS keytool -export -alias sam1 -keystore C:/samuel.jks -file C:/samuel_keytool.cer -storepass sam123 As listagens 5.2 e 5.3 mostram a compatibilidade de certificados X.509 entre ferramentas de manipulação de certificado digital. Inicialmente foi importado um certificado contendo a chave pública chamado samuel_certisign.cer que havia sido exportado pelo Internet Explorer e depois de armazenado no KeyStore samuel.jks foi possível exportá-lo também com a chave pública um arquivo no formato X.509 chamado samuel_keytool.cer através da ferramenta Keytool do JDK. Outro ponto a ser explicado na geração de um certificado digital pelo Keytool é a questão da autoridade certificadora que emitiu este certificado. Um certificado digital com a chave privada gerado pelo Keytool é um certificado auto- assinado por quem o gerou. Um exemplo prático disso é mostrado através da figura 5.2, no qual, ao executar um arquivo com extensão .cer, gerado pelo Keytool, é exibida uma interface contendo informações do certificado. Nesta interface contém o
  51. 51. 51 seguinte aviso de problema do certificado “Este certificado raiz da autoridade certificadora não é confiável. Para ativar a confiabilidade, instale este certificado no armazenamento das autoridades de certificação da raiz de confiança”. Já na figura 5.3 é mostrado o caminho de certificação com o ícone de inválido. Isto porque, como foi criado pela ferramenta Keytool e nela não há um certificado raiz que emita o certificado. Figura 5.2 - Interface de execução de um arquivo .cer gerado pelo Keytool Figura 5.3 - Caminho de Certificação do certificado da figura 17 Mas, após a instalação deste certificado através da opção de instalar certificado, localizada na parte inferior da interface, ele ficará armazenado no navegador Internet Explorer em “autoridades de certificação raiz confiáveis”, e após
  52. 52. 52 ser instalado neste local será reconhecido como um certificado válido, desde que esteja com seus dados realmente válidos, e isto é observado através das figuras 5.4 e 5.5. Figura 5.4 - Interface de execução de um arquivo .cer após a instalação Figura 5.5 - Caminho de Certificação do certificado da figura 5.4
  53. 53. 53 Se este certificado fosse emitido por uma autoridade certificadora, o caminho de certificação estaria com um ou mais níveis acima contendo as autoridades certificadoras que fazem parte do caminho de certificação do certificado de “SAMUEL”. A figura 5.6 mostra um certificado existente no Internet Banking da Caixa Econômica Federal que foi emitido pela autoridade certificadora AC CAIXA IN, que é uma autoridade certificadora intermediária da Caixa, cujo certificado foi emitido pela AC CAIXA, que é uma das oito autoridades certificadoras que fazem parte da ICP-Brasil e cujo certificado foi emitido pela autoridade certificadora raiz do Brasil. Figura 5.6 - Caminho de Certificação de um certificado da Caixa 5.3 API Java para Assinatura Digital Nas próximas listagens serão mostrados os códigos em Java para extração da chave privada e da chave pública de um certificado, para que seja feita a assinatura digital de uma mensagem e a validação da mesma. E ainda será mostrado como é feita a leitura de um arquivo de certificado do tipo JKS e do tipo PKCS#12, para que seja manipulado em uma classe Java. A listagem 5.4 mostra as classes da API Java que foram utilizadas para extração da chave privada e pública, assinatura e validação de uma mensagem. Listagem 5.4 - Classes da API Java
  54. 54. 54 A listagem 5.5 e 5.6 mostram a extração de uma chave privada e de uma chave pública a partir de um arquivo JKS com extensão .jks ou um arquivo do tipo PKCS#12 com a extensão .pfx ou .p12. O tipo de KeyStore será informado como nos métodos abaixo de extração de chaves. O que difere entre ambos os tipos será apenas na forma de como é capturado o alias de acesso ao certificado no KeyStore. Quando a instância de uma classe KeyStore é feita a partir um JKS, já sabemos qual o nome do alias para que possamos acessar o certificado, uma vez que foi criado pela ferramenta Keytool e em um ambiente local. Mas, quando a instância do KeyStore é feita a partir de um arquivo do tipo PKCS#12, não se sabe a princípio o nome do alias, pois este arquivo foi gerado e exportado de um servidor web e que havia sido instalado junto a uma autoridade certificadora. No entanto, para capturar um alias de um certificado .pfx, será utilizado um método da instância da classe KeyStore chamado “aliases” que retorna os aliases de um repositório de certificados, que no caso de um arquivo .pfx teremos apenas um alias a ser obtido. Listagem 5.5 - Método de extração de uma chave privada
  55. 55. 55 Listagem 5.6 - Método de extração de uma chave pública Uma vez de posse da chave privada e da chave pública, serão mostrados, através das listagens 5.7 e 5.8, métodos de assinatura e de validação de uma mensagem, para os quais esta será passada como parâmetro em forma de array de bytes. Os métodos de assinatura e validação utilizam na instância da classe Signature a string “SHA1withRSA” que significa que o algoritmo a ser utilizado para assinatura da mensagem será o SHA1, para geração do message digest, e que será combinado com RSA que é o algoritmo assimétrico utilizado na geração do par de chaves. Listagem 5.7 - Método de criação de uma assinatura digital
  56. 56. 56 Listagem 5.8 - Método de validação de uma assinatura digital As listagens acima mostram de forma simples que a assinatura digital pode ser utilizada com a API existente no Java. Mas, ainda é importante deixar claro que uma assinatura digital pode ser aplicada tanto em uma mensagem como em um arquivo. Além disso, pode ser gerada dentro da própria mensagem ou de um arquivo, com a informação a ser assinada, ou em arquivos a parte como por exemplo : uma assinatura pode ser criada em um arquivo separado e enviada a um destino para ser validada junto com a mensagem ou o arquivo original contendo o conteúdo da informação.
  57. 57. 57 6 - ASSINATURA DIGITAL EM ARQUIVOS XML O XML (Extensible Markup Language) ou Linguagem Extensível de Marcação) foi criado para permitir que um usuário de linguagem de marcação de texto crie suas próprias regras em documentos digitais e que estes sejam lidos e manipulados de forma padronizada. As regras para estruturas de documentos XML são definidas em um arquivo separado, chamado de esquema, e é através deste que o documento XML pode ser construído dentro de um padrão e com isto é possível ser validado. Além disso, através de um documento XML a troca de dados entre entidades na internet se torna padrão e consequentemente eficiente. Diante da padronização ou uma especificação a ser seguida, uma outra grande vantagem de um documento XML é a independência de plataforma, ou seja, este tipo de documento não depende de sistema operacional e pode ser interpretado por diversas linguagens de programação [24]. 6.1 - Estrutura de um Documento XML A listagem 6.1 mostra que um documento XML segue uma estrutura de um modelo de árvore de elementos, onde existem elementos internos a outros, que são chamados de elementos filhos. Na listagem, da mesma forma que os elementos <remetente> e <destinatario> são filhos do elemento <cabecalho>, os elementos <cabecalho> e <corpo> são também filhos do elemento raiz <mensagem>. A listagem a seguir mostra um exemplo de um documento XML contendo a mensagem de um e-mail.

×