SlideShare uma empresa Scribd logo
1 de 100
Baixar para ler offline
1




      UNIVERSIDADE TIRADENTES


      SAMUEL VASCONCELLOS SERRA




        CERTIFICAÇÃO DIGITAL :

UMA NOVA ERA DE SEGURANÇA ELETRÔNICA




               ARACAJU
                 2006
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




    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




Aos meus familiares que sempre

estiveram presentes nesta vitória.
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




                                                                     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



    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




                                     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




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




                                     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




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




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




          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




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




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




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




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




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




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




         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




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




                 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




             •   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




           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




         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




             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




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




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




            •   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




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




             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




          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




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




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




          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




          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




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




          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




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




          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




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




           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




          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




         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




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




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




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




          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




          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




          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




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




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




          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




           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




          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




          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




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.
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML
Certificado Digital e Assinatura XML

Mais conteúdo relacionado

Mais procurados

Justiça do trabalho
Justiça do trabalhoJustiça do trabalho
Justiça do trabalhoEdson Palma
 
Manual Crioscópio Eletrônico pzl 7000 rev. 1.0
Manual Crioscópio Eletrônico pzl 7000 rev. 1.0Manual Crioscópio Eletrônico pzl 7000 rev. 1.0
Manual Crioscópio Eletrônico pzl 7000 rev. 1.0PZL Tecnologia
 
Apostila do Samu Santa Catarina
Apostila do Samu Santa CatarinaApostila do Samu Santa Catarina
Apostila do Samu Santa Catarinaguest426f0c1
 
SEI | Procedimento Operacional Padrão
SEI | Procedimento Operacional PadrãoSEI | Procedimento Operacional Padrão
SEI | Procedimento Operacional PadrãoColaborativismo
 
contabilidade
contabilidadecontabilidade
contabilidadewixbrasil
 
SISCOSERV - 2ª Edição - IOB e-Store
SISCOSERV - 2ª Edição - IOB e-StoreSISCOSERV - 2ª Edição - IOB e-Store
SISCOSERV - 2ª Edição - IOB e-StoreIOB News
 
Relatório tfc caio eduardo silva - implementação de um sistema de aquisição...
Relatório tfc   caio eduardo silva - implementação de um sistema de aquisição...Relatório tfc   caio eduardo silva - implementação de um sistema de aquisição...
Relatório tfc caio eduardo silva - implementação de um sistema de aquisição...Caio Eduardo Silva
 
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURA
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURAESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURA
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURASabrina Mariana
 
SEI | CADE Sem Papel | Manual de Uso
SEI | CADE Sem Papel | Manual de UsoSEI | CADE Sem Papel | Manual de Uso
SEI | CADE Sem Papel | Manual de UsoColaborativismo
 

Mais procurados (18)

Apostila NR-10
Apostila NR-10Apostila NR-10
Apostila NR-10
 
Justiça do trabalho
Justiça do trabalhoJustiça do trabalho
Justiça do trabalho
 
Manual Crioscópio Eletrônico pzl 7000 rev. 1.0
Manual Crioscópio Eletrônico pzl 7000 rev. 1.0Manual Crioscópio Eletrônico pzl 7000 rev. 1.0
Manual Crioscópio Eletrônico pzl 7000 rev. 1.0
 
Apostila do Samu Santa Catarina
Apostila do Samu Santa CatarinaApostila do Samu Santa Catarina
Apostila do Samu Santa Catarina
 
Art14
Art14Art14
Art14
 
Act cbtu 2007 2009
Act cbtu 2007 2009Act cbtu 2007 2009
Act cbtu 2007 2009
 
SEI | Procedimento Operacional Padrão
SEI | Procedimento Operacional PadrãoSEI | Procedimento Operacional Padrão
SEI | Procedimento Operacional Padrão
 
contabilidade
contabilidadecontabilidade
contabilidade
 
Curso De Acess
Curso De AcessCurso De Acess
Curso De Acess
 
Act cbtu 2006 2007
Act cbtu 2006 2007Act cbtu 2006 2007
Act cbtu 2006 2007
 
SISCOSERV - 2ª Edição - IOB e-Store
SISCOSERV - 2ª Edição - IOB e-StoreSISCOSERV - 2ª Edição - IOB e-Store
SISCOSERV - 2ª Edição - IOB e-Store
 
Relatório tfc caio eduardo silva - implementação de um sistema de aquisição...
Relatório tfc   caio eduardo silva - implementação de um sistema de aquisição...Relatório tfc   caio eduardo silva - implementação de um sistema de aquisição...
Relatório tfc caio eduardo silva - implementação de um sistema de aquisição...
 
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURA
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURAESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURA
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURA
 
Domínio lalur
Domínio lalurDomínio lalur
Domínio lalur
 
Módulo aquisição
Módulo aquisiçãoMódulo aquisição
Módulo aquisição
 
SEI | CADE Sem Papel | Manual de Uso
SEI | CADE Sem Papel | Manual de UsoSEI | CADE Sem Papel | Manual de Uso
SEI | CADE Sem Papel | Manual de Uso
 
01 hardware 2011
01 hardware 201101 hardware 2011
01 hardware 2011
 
Módulo venda
Módulo vendaMódulo venda
Módulo venda
 

Destaque

Petic Ssp 2010 2012 V 2.0
Petic Ssp 2010 2012   V 2.0Petic Ssp 2010 2012   V 2.0
Petic Ssp 2010 2012 V 2.0Diego Martins
 
PETIC 2.0 - GERTEC - SEFAZ/SE - 2009 - 2011
PETIC 2.0 - GERTEC - SEFAZ/SE - 2009 - 2011PETIC 2.0 - GERTEC - SEFAZ/SE - 2009 - 2011
PETIC 2.0 - GERTEC - SEFAZ/SE - 2009 - 2011luizrbs
 
PETIC GERTEC SEFAZ-SE 2009-2011
PETIC GERTEC SEFAZ-SE 2009-2011PETIC GERTEC SEFAZ-SE 2009-2011
PETIC GERTEC SEFAZ-SE 2009-2011luizrbs
 
What's Next in Growth? 2016
What's Next in Growth? 2016What's Next in Growth? 2016
What's Next in Growth? 2016Andrew Chen
 
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your BusinessBarry Feldman
 

Destaque (6)

Petic Ssp 2010 2012 V 2.0
Petic Ssp 2010 2012   V 2.0Petic Ssp 2010 2012   V 2.0
Petic Ssp 2010 2012 V 2.0
 
PETIC SEAD/SE 2.0
PETIC SEAD/SE 2.0PETIC SEAD/SE 2.0
PETIC SEAD/SE 2.0
 
PETIC 2.0 - GERTEC - SEFAZ/SE - 2009 - 2011
PETIC 2.0 - GERTEC - SEFAZ/SE - 2009 - 2011PETIC 2.0 - GERTEC - SEFAZ/SE - 2009 - 2011
PETIC 2.0 - GERTEC - SEFAZ/SE - 2009 - 2011
 
PETIC GERTEC SEFAZ-SE 2009-2011
PETIC GERTEC SEFAZ-SE 2009-2011PETIC GERTEC SEFAZ-SE 2009-2011
PETIC GERTEC SEFAZ-SE 2009-2011
 
What's Next in Growth? 2016
What's Next in Growth? 2016What's Next in Growth? 2016
What's Next in Growth? 2016
 
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
 

Semelhante a Certificado Digital e Assinatura XML

Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...Mauricio Volkweis Astiazara
 
Repositório do Parque Tecnológico da PMSP
Repositório do Parque Tecnológico da PMSPRepositório do Parque Tecnológico da PMSP
Repositório do Parque Tecnológico da PMSPMário Januário Filho
 
Campanha de Blended Marketing Finalista do Concurso SkyDrive Studio - Microso...
Campanha de Blended Marketing Finalista do Concurso SkyDrive Studio - Microso...Campanha de Blended Marketing Finalista do Concurso SkyDrive Studio - Microso...
Campanha de Blended Marketing Finalista do Concurso SkyDrive Studio - Microso...Carolina Morgado
 
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e XenVirtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e XenAlan Brumate
 
Estruturas de dados dinâmicos em linguagem C
Estruturas de dados dinâmicos em linguagem CEstruturas de dados dinâmicos em linguagem C
Estruturas de dados dinâmicos em linguagem Cpjclima
 
Monografia Marcos Bezerra 2008
Monografia Marcos Bezerra   2008Monografia Marcos Bezerra   2008
Monografia Marcos Bezerra 2008Marcos Bezerra
 
Microsoft word introdução ao sped
Microsoft word   introdução ao spedMicrosoft word   introdução ao sped
Microsoft word introdução ao spedsapmes
 
UNIARP 2013 - Normalização (Trabalhos Acadêmicos)
UNIARP 2013 - Normalização (Trabalhos Acadêmicos)UNIARP 2013 - Normalização (Trabalhos Acadêmicos)
UNIARP 2013 - Normalização (Trabalhos Acadêmicos)greiceluane
 
Curso mat financeira
Curso mat financeiraCurso mat financeira
Curso mat financeiranarlacristina
 
COMÉRCIO ELETRÔNICO DE PRODUTOS VIA WEB
COMÉRCIO ELETRÔNICO DE PRODUTOS VIA WEB COMÉRCIO ELETRÔNICO DE PRODUTOS VIA WEB
COMÉRCIO ELETRÔNICO DE PRODUTOS VIA WEB Norton Guimarães
 
Toturial autocad2009(1)
Toturial autocad2009(1)Toturial autocad2009(1)
Toturial autocad2009(1)abrito1966
 
Avaliação de Usabilidade (Monografia)
Avaliação de Usabilidade (Monografia)Avaliação de Usabilidade (Monografia)
Avaliação de Usabilidade (Monografia)Rafael Marinho
 
Avaliação de Usabilidade
Avaliação de UsabilidadeAvaliação de Usabilidade
Avaliação de UsabilidadeMarcelo Ramos
 
Analista de Segurança em Redes.pdf
Analista de Segurança em Redes.pdfAnalista de Segurança em Redes.pdf
Analista de Segurança em Redes.pdfOs Fantasmas !
 
Dissertação Mestrado
Dissertação MestradoDissertação Mestrado
Dissertação MestradoJoel Carvalho
 
2014 kira aplicacao_tecnicas_mineracao
2014 kira aplicacao_tecnicas_mineracao2014 kira aplicacao_tecnicas_mineracao
2014 kira aplicacao_tecnicas_mineracaoWosley Arruda
 
Avaliação de um Mecanismo Autonômico para Segurança em Rede Baseado em Metodo...
Avaliação de um Mecanismo Autonômico para Segurança em Rede Baseado em Metodo...Avaliação de um Mecanismo Autonômico para Segurança em Rede Baseado em Metodo...
Avaliação de um Mecanismo Autonômico para Segurança em Rede Baseado em Metodo...Jean Pablo
 
UFSC_ANALISE_REQUISITOS_ABORDAGEM_NAO_FUNCIONAIS.pdf
UFSC_ANALISE_REQUISITOS_ABORDAGEM_NAO_FUNCIONAIS.pdfUFSC_ANALISE_REQUISITOS_ABORDAGEM_NAO_FUNCIONAIS.pdf
UFSC_ANALISE_REQUISITOS_ABORDAGEM_NAO_FUNCIONAIS.pdfSempra - Consultoria
 
Comandos elétricos 1
Comandos elétricos 1Comandos elétricos 1
Comandos elétricos 1Ederson Silva
 

Semelhante a Certificado Digital e Assinatura XML (20)

Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
 
Repositório do Parque Tecnológico da PMSP
Repositório do Parque Tecnológico da PMSPRepositório do Parque Tecnológico da PMSP
Repositório do Parque Tecnológico da PMSP
 
Campanha de Blended Marketing Finalista do Concurso SkyDrive Studio - Microso...
Campanha de Blended Marketing Finalista do Concurso SkyDrive Studio - Microso...Campanha de Blended Marketing Finalista do Concurso SkyDrive Studio - Microso...
Campanha de Blended Marketing Finalista do Concurso SkyDrive Studio - Microso...
 
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e XenVirtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
 
Estruturas de dados dinâmicos em linguagem C
Estruturas de dados dinâmicos em linguagem CEstruturas de dados dinâmicos em linguagem C
Estruturas de dados dinâmicos em linguagem C
 
Monografia Marcos Bezerra 2008
Monografia Marcos Bezerra   2008Monografia Marcos Bezerra   2008
Monografia Marcos Bezerra 2008
 
Microsoft word introdução ao sped
Microsoft word   introdução ao spedMicrosoft word   introdução ao sped
Microsoft word introdução ao sped
 
UNIARP 2013 - Normalização (Trabalhos Acadêmicos)
UNIARP 2013 - Normalização (Trabalhos Acadêmicos)UNIARP 2013 - Normalização (Trabalhos Acadêmicos)
UNIARP 2013 - Normalização (Trabalhos Acadêmicos)
 
Curso mat financeira
Curso mat financeiraCurso mat financeira
Curso mat financeira
 
COMÉRCIO ELETRÔNICO DE PRODUTOS VIA WEB
COMÉRCIO ELETRÔNICO DE PRODUTOS VIA WEB COMÉRCIO ELETRÔNICO DE PRODUTOS VIA WEB
COMÉRCIO ELETRÔNICO DE PRODUTOS VIA WEB
 
Auto cad
Auto cadAuto cad
Auto cad
 
Toturial autocad2009(1)
Toturial autocad2009(1)Toturial autocad2009(1)
Toturial autocad2009(1)
 
Avaliação de Usabilidade (Monografia)
Avaliação de Usabilidade (Monografia)Avaliação de Usabilidade (Monografia)
Avaliação de Usabilidade (Monografia)
 
Avaliação de Usabilidade
Avaliação de UsabilidadeAvaliação de Usabilidade
Avaliação de Usabilidade
 
Analista de Segurança em Redes.pdf
Analista de Segurança em Redes.pdfAnalista de Segurança em Redes.pdf
Analista de Segurança em Redes.pdf
 
Dissertação Mestrado
Dissertação MestradoDissertação Mestrado
Dissertação Mestrado
 
2014 kira aplicacao_tecnicas_mineracao
2014 kira aplicacao_tecnicas_mineracao2014 kira aplicacao_tecnicas_mineracao
2014 kira aplicacao_tecnicas_mineracao
 
Avaliação de um Mecanismo Autonômico para Segurança em Rede Baseado em Metodo...
Avaliação de um Mecanismo Autonômico para Segurança em Rede Baseado em Metodo...Avaliação de um Mecanismo Autonômico para Segurança em Rede Baseado em Metodo...
Avaliação de um Mecanismo Autonômico para Segurança em Rede Baseado em Metodo...
 
UFSC_ANALISE_REQUISITOS_ABORDAGEM_NAO_FUNCIONAIS.pdf
UFSC_ANALISE_REQUISITOS_ABORDAGEM_NAO_FUNCIONAIS.pdfUFSC_ANALISE_REQUISITOS_ABORDAGEM_NAO_FUNCIONAIS.pdf
UFSC_ANALISE_REQUISITOS_ABORDAGEM_NAO_FUNCIONAIS.pdf
 
Comandos elétricos 1
Comandos elétricos 1Comandos elétricos 1
Comandos elétricos 1
 

Certificado Digital e Assinatura XML

  • 1. 1 UNIVERSIDADE TIRADENTES SAMUEL VASCONCELLOS SERRA CERTIFICAÇÃO DIGITAL : UMA NOVA ERA DE SEGURANÇA ELETRÔNICA ARACAJU 2006
  • 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 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 Aos meus familiares que sempre estiveram presentes nesta vitória.
  • 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 • 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 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 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 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 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 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 • 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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.