Post on 05-Dec-2018
UNIVERSIDADE REGIONAL DE BLUMENAU
CENTRO DE CIÊNCIAS EXATAS E NATURAIS
CURSO DE ENGENHARIA DE TELECOMUNICAÇÕES
APLICATIVO USANDO XML PROTEGIDO PARA GERAÇÃO
DE CONTEÚDO SEGURO A PARTIR DE UM CADASTRO DE
CLIENTES
MARIANA BOTTER CÁRIO
BLUMENAU 2005
2005/1
MARIANA BOTTER CÁRIO
APLICATIVO USANDO XML PROTEGIDO PARA GERAÇÃO
DE CONTEÚDO SEGURO A PARTIR DE UM CADASTRO DE
CLIENTES
Trabalho de Conclusão de Curso submetido à Universidade Regional de Blumenau para a obtenção dos créditos na disciplina Trabalho de Conclusão de Curso do curso de Engenharia de Telecomunicações.
Prof. Francisco Adell Péricas, Mestre - Orientador
BLUMENAU 2005
2005/1
APLICATIVO USANDO XML PROTEGIDO PARA GERAÇÃO
DE CONTEÚDO SEGURO A PARTIR DE UM CADASTRO DE
CLIENTES
Blumenau, 1 de julho de 2005
Dedico este trabalho aos meus pais pelo incentivo, carinho e amor que nunca me faltaram. Ao meu irmão pelas festas que fez por mim durante o desenvolvimento deste. À memória de minha avó, por não poder compartilhar deste momento comigo.
AGRADECIMENTOS
A Deus em primeiro lugar por todos acontecimentos e por cada obstáculo que
atravessei, hoje sei que me tornaram mais forte.
Aos meus pais por terem acreditado no meu potencial.
Ao professor Francisco Adell Péricas pela forma como conduziu seu encargo de
orientador, sempre com paciência, presteza, incentivo e principalmente, com muito
conhecimento, o que contribuiu muito para a conclusão deste trabalho.
Ao Wender Cris de Souza Firmino por ter me passado um pouco do seu grande
conhecimento na área da programação.
A todos os meus amigos, os quais seria difícil citar ou chato esquecer alguém.
Nunca ande pelo caminho traçado, pois ele te conduz somente até onde os outros foram.
Alexandre Graham Bell
RESUMO
Este trabalho apresenta a especificação e o desenvolvimento de um aplicativo que gera, a partir de um banco de dados de clientes, um conteúdo XML protegido que pode ser transmitidos pela Web com segurança. O aplicativo desenvolvido tem por objetivo proteger dados de clientes utilizando as técnicas de criptografia ou assinatura digital em documentos XML. O trabalho pretende mostrar o documento submetido a ambas as formas de segurança e comprovar seu funcionamento.
Palavras-chave: XML, criptografia, assinatura digital, segurança.
ABSTRACT
This work presents the specification and the development of software that generates, from clients data base, an XML protected content that can be transmitted by the Web with security. The software developed has for objective to protect clients data, using the cryptography techniques or digital signature in XML documents. The work intends to show the document submitted to both ways of security and prove its functioning.
Key-Words: XML, cryptography, digital signature, security.
LISTA DE ILUSTRAÇÕES
Figura 1: Criptografia de chave secreta....................................................................................18
Figura 2: Criptografia de chave pública ...................................................................................19
Quadro 1 – Exemplo de um documento XML .........................................................................29
Quadro 2 – Exemplo de um documento XML criptografado...................................................29
Quadro 3 – Exemplo da estrutura de uma assinatura digital usando XML..............................32
Figura 3: Exemplo de criptografia de dado assinado e com assinatura (separado)..................34
Figura 4: Exemplo de criptografia de dado assinado e com assinatura (compactado).............34
Figura 5: Exemplo de criptografia de dado assinado e sem assinatura (separado) ..................35
Figura 6: Exemplo de assinatura de texto cifrado e criptografado (separado) ........................36
Figura 7: Fluxograma do Processo A .......................................................................................39
Figura 8: Fluxograma do Processo B .......................................................................................40
Figura 9: Fluxograma do Processo C .......................................................................................41
Figura 10: Fluxograma do Processo D .....................................................................................42
Figura 11: Código gerador de XML a partir de base de dados Texto ......................................45
Quadro 4 – Trecho do documento texto ...................................................................................45
Quadro 5 – Documento XML normal ......................................................................................46
Figura 12: Tela do documento XML normal............................................................................46
Quadro 6 – Documento XML criptografado ............................................................................47
Figura 13: Tela do documento XML criptografado .................................................................47
Quadro 7 – Documento decriptografado ..................................................................................48
Figura 14: Tela do documento XML decriptografado..............................................................48
Quadro 8 – Documento XML normal assinado .......................................................................49
LISTA DE SIGLAS
AES – Advanced Encryption Standard
API – Application Programming Interface
CA – Certification Authority
DTD – Document Type Definition
HTML – Hypertext Markup Language
RSA – Rivest, Shamir, Adleman
VB – Visual Basic
XLink – XML Linking Language
XML – Extensible Markup Language
XPointer – XML Pointer Language
XSL – Extensible Style Language
W3C – World Wide Web Consortium
WWW – Word Wide Web
SUMÁRIO
1 INTRODUÇÃO..................................................................................................................11
1.1 JUSTIFICATIVA..............................................................................................................12
1.2 DEFINIÇÃO DO PROBLEMA........................................................................................12
1.3 QUESTÕES DE PESQUISA ............................................................................................12
1.4 OBJETIVOS DO TRABALHO ........................................................................................13
1.4.1 Objetivo geral..................................................................................................................13
1.4.2 Objetivos específicos ......................................................................................................13
1.5 ESTRUTURA DO TRABALHO ......................................................................................14
2 SEGURANÇA EM REDE.................................................................................................15
2.1 CRIPTOGRAFIA (SIGILO) .............................................................................................16
2.1.1 CRIPTOGRAFIA DE CHAVES SECRETAS ...............................................................17
2.1.2 CRIPTOGRAFIA DE CHAVES PÚBLICAS................................................................18
2.2 ASSINATURA DIGITAL (INTEGRIDADE)..................................................................20
2.3 CERTIFICADO DIGITAL (AUTENTICAÇÃO) ............................................................21
3 APLICAÇÕES WEB.........................................................................................................23
3.1 REPRESENTAÇÃO DE DADOS EM APLICAÇÕES WEB..........................................24
3.2 XML ..................................................................................................................................25
3.2.1 DTD ................................................................................................................................26
3.3 XML PROTEGIDO...........................................................................................................27
3.3.1 Criptografia do XML ......................................................................................................28
3.3.2 Assinatura digital do XML..............................................................................................31
3.3.3 Utilizando a criptografia XML com a assinatura digital XML.......................................33
4 DESENVOLVIMENTO DO APLICATIVO ..................................................................37
4.1 REQUISITOS PRINCIPAIS DO APLICATIVO .............................................................37
4.2 ESPECIFICAÇÕES DO SISTEMA..................................................................................38
4.3 IMPLEMENTAÇÃO DO SISTEMA................................................................................42
4.3.1 Ferramentas e bibliotecas utilizadas................................................................................43
4.3.2 Implementação do software ............................................................................................45
5 CONCLUSÃO....................................................................................................................51
5.1 EXTENSÕES ....................................................................................................................52
REFERÊNCIAS BIBLIOGRÁFICAS .................................................................................53
11
1 INTRODUÇÃO
A Internet é considerada por muitos como um dos mais importantes e revolucionários
desenvolvimentos da história da humanidade. Pela primeira vez no mundo, um cidadão
comum ou uma pequena empresa pode, facilmente e a um custo muito baixo, não só ter
acesso a informações localizadas nos mais distantes pontos do mundo, como também criar,
gerenciar e distribuir informações em larga escala, algo que somente uma grande organização
podia fazer usando os meios de comunicação convencionais.
Com a elaboração de softwares com interfaces cada vez mais fáceis de se manipular, as
pessoas foram se encorajando a participar da rede. O grande atrativo da Internet é a
possibilidade de se trocar e compartilhar idéias, estudos e informações com outras pessoas
que, muitas vezes nem se conhecem pessoalmente.
“Atualmente, passado pouco mais de trinta anos desde a implementação da primeira
rede Internet (a ARPANET), o mundo está bem diferente, e a Internet já faz parte da vida de
muita gente. Isto aconteceu, sobretudo por causa do advento dos navegadores Web (tipo
Netscape e Internet Explorer)” (FIGUEIREDO, 2000).
A exposição de dados na Web tem se tornado maior e o fato de ser freqüentada por
todos os tipos de pessoas, bem ou mal intencionadas, já há algum tempo tem causado
desconfiança. Esta sensação de insegurança faz com que haja um crescente número de
técnicas e ferramentas desenvolvidas para incrementar os requisitos de segurança na
comunicação entre computadores.
Uma dessas técnicas é o emprego do Extensible Markup Language (XML) protegido,
o qual tem sido bastante explorado como uma outra forma de proteção do tráfego de dados na
Internet, permitindo o surgimento de uma nova geração de aplicações de transporte,
manipulação e visualização de dados com mais segurança.
12
1.1 JUSTIFICATIVA
A troca de informações na Web faz com que os dados fiquem expostos a crackers e
hackers, e, caso isto aconteça em uma infra-estrutura que inclua serviços de emergência, do
governo, no fornecimento de água, de energia elétrica, telecomunicações entre outras, estas
instituições podem ser fortemente abaladas.
O XML é uma opção bastante interessante para proteger dados que precisam ser
transportados pela Internet, utilizando a criptografia para garantir seu sigilo e as assinaturas
digitais para garantir sua autoria e integridade.
A melhor maneira de proteger qualquer documento XML que precise ser transportado
na internet é através de assinaturas digitais, e quando usados em conjunto com a criptografia,
este fornece uma solução de segurança completa.
1.2 DEFINIÇÃO DO PROBLEMA
Atualmente, no mundo das redes e do comércio eletrônico, todo sistema de
computador se tornou um alvo em potencial para intrusos. O problema é que não há como
saber os motivos que levam os intrusos a agir e nem quando podem atacar, contudo é
importante tentar se prevenir utilizando mecanismos de proteção. Uma solução para este
problema é o uso do XML protegido, que tem como objetivo permitir o acesso a dados através
do uso da criptografia e da assinatura digital.
1.3 QUESTÕES DE PESQUISA
Durante a elaboração deste trabalho, procurou-se responder as seguintes questões:
13
• quais são as características técnicas que apontam à viabilidade do aplicativo de
segurança na Web usando XML criptografado e com assinatura digital;
• quais são as vantagens e desvantagens de transportar informação sigilosa pela rede
usando XML protegido.
1.4 OBJETIVOS DO TRABALHO
Os objetivos deste trabalho estão divididos em objetivo geral e objetivos específicos.
1.4.1 Objetivo geral
Este trabalho tem como objetivo desenvolver um aplicativo que gere um conteúdo de
um cadastro confidencial de clientes utilizando o XML protegido para garantir o sigilo, a
procedência e a integridade de dados.
1.4.2 Objetivos específicos
Os objetivos específicos deste trabalho são:
a) estudar a criptografia, a assinatura digital e a certificação digital;
b) estudar o XML protegido;
c) consultar um cadastro para obter os dados de clientes;
d) utilizar o XML para gerar uma página Web com o conteúdo deste cadastro;
e) utilizar o XML seguro para criptografar o conteúdo desta página XML e assim
permitir que possa ser transportado de forma segura pela internet;
f) utilizar o XML seguro para assinar o conteúdo desta página XML e assim permitir
14
que possa ser transportado de forma segura pela internet.
1.5 ESTRUTURA DO TRABALHO
O trabalho está estruturado em cinco capítulos, sendo o primeiro a introdução que
compreende a justificativa, definição do problema, questões de pesquisa, objetivos do
trabalho e estrutura do trabalho. No segundo capítulo, trata-se do enfoque teórico dado à
segurança em redes de computadores e os recursos como criptografia, assinatura digital e
certificação digital. Por sua vez, o terceiro capítulo apresenta as aplicações Web e a
necessidade de criar uma nova linguagem que é a atual XML e suas formas de segurança
através da criptografia e assinatura digital. No quarto capítulo, apresenta-se o
desenvolvimento do aplicativo que está estruturado pelos subitens requisitos principais do
aplicativo, especificações do sistema e implementação do sistema. E por fim no quinto
capítulo, faz-se a conclusão do presente estudo.
15
2 SEGURANÇA EM REDE
A segurança em redes refere-se à troca de dados via redes de forma segura,
assegurando que seus dados estão protegidos e não poderão ser compreendidos nem
modificados por pessoas não autorizadas.
Um dos maiores problemas e dos mais difíceis de resolver tem sido o da segurança de
dados nas redes, atualmente a necessidade da sua eficiência tem se intensificado, pois a
evolução dos meios de transmissão e o seu custo reduzido têm levado um grande número de
usuários ao uso de mensagens eletrônicas e do comércio eletrônico, tanto no meio comercial
quanto residencial, situação que tem se difundido cada vez mais.
Conforme Figueiredo (2000), com a crescente utilização da Internet, empresas
passaram a utilizá-la como meio de venda de seus produtos. Diariamente são executadas por
empresas e indivíduos inúmeras transações on-line, como por exemplo, pagamento realizado
via ordens eletrônicas, verificação de contas bancárias, informações confidenciais trocadas via
e-mail, compartilhamento de arquivos de empresas. Mediante todas estas transações on-line,
as empresas passaram a se preocupar e a investir mais na segurança de seus dados, pois têm
consciência do prejuízo que pode causar a perda ou dano de um documento.
À medida que são criadas técnicas mais avançadas para que os dados fiquem realmente
seguros em redes, ocorre um avanço também entre aqueles que praticavam atividades ilegais,
pois para eles cada nova tecnologia é um novo desafio. Perante isto, a segurança deve ser ao
longo sempre presente para proteção dos dados e não apenas depois da ocorrência de um
incidente causado por algum intruso.
Para que um sistema torne-se seguro, é necessário utilizar uma série de recursos
existentes que garantem o uso dos serviços de forma segura, como a criptografia (privacidade
de informação), assinatura digital (informação não modificada em trânsito) e certificação
16
digital (identificação de pessoa ou identidade).
2.1 CRIPTOGRAFIA (SIGILO)
Um método eficaz e disponível que oferece proteção tanto no armazenamento, quanto
no transporte de informações por uma rede pública ou pela Internet é a criptografia (significa
codificar dados em informações aparentemente sem sentido, para que pessoas não consigam
ter acesso às informações que foram cifradas, usando para isso funções matemáticas e um
código especial, chamada chave).
Com a chegada dos computadores, a criptografia se tornou uma parte indispensável da
segurança moderna, sendo empregada no ambiente computacional para proteção de
documentos secretos, transmitir informações confidenciais pela Internet ou por uma rede
local, entre pessoas autorizadas.
Um algoritmo de criptografia é uma “transformação matemática usada no processo de
encriptação e de desencriptação” (SANTOS, 2005). A criptografia possibilita que se guardem
importantes informações ou as transmitam através de redes inseguras (como a Internet) de tal
forma que a informação não se torne legível a não ser por quem é pretendido. A operação de
decriptografar é exatamente o inverso, ou seja, dado o texto cifrado, através do emprego do
mesmo algoritmo e da chave usados na criptografia, obtém-se o texto legível original.
Assim sendo, um “algoritmo de criptografia trabalha em conjunto com uma chave,
uma palavra, um número ou uma frase para encriptar os dados” (SANTOS, 2005). Os mesmos
dados devem gerar diferentes dados encriptados usando chaves diferentes, ou seja, se
mudarmos a chave para um mesmo conjunto de dados geramos dados encriptados diferentes.
A segurança de dados encriptados é completamente dependente da força do algoritmo de
criptografia (esta força é medida com o tempo e recursos necessários para recuperar os dados)
17
e do segredo da chave.
Quando se analisa a criptografia, fala-se também sobre chaves, pois elas são quem
fecham e abrem a criptografia dos dados. Existem dois métodos para se trabalhar com chaves
criptografadas: criptografia de chaves secretas e criptografia de chaves públicas.
2.1.1 CRIPTOGRAFIA DE CHAVES SECRETAS
Ocorre quando uma única chave criptografa e decriptografa os dados, a qual precisa
ser compartilhada previamente entre remetente e destinatário. Ela é relativamente pequena e
rápida, contudo como desvantagem, não só o transmissor deve conhecer a chave como
também o receptor, para poder ter acesso aos dados: é o problema da distribuição de chaves
(PÉRICAS, 2003). Esse método não é muito eficiente em conexões inseguras, no entanto,
quando utilizado sobre conexões seguras, a criptografia com chave secreta se torna bem
eficiente.
Como mostra a Figura 1, a criptografia de chave secreta ocorre da seguinte forma:
quando a origem cifra uma mensagem, ela utiliza um algoritmo de criptografia e uma chave
secreta para transformar uma mensagem original em um texto cifrado e o envia a seu
destinatário por uma rede insegura. O destinatário, por sua vez, para decifrar a mensagem,
utiliza o algoritmo de decriptografia correspondente e a mesma chave, para transformar o
texto cifrado na mensagem original. Caso um intruso tente decifrar a mensagem, não
conseguirá sem possuir a chave secreta.
18
� � �
Fonte: Santos (2005) Figura 1: Criptografia de chave secreta
Desta forma, a segurança do sistema está em manter o segredo da chave e não mais no
algoritmo (conjunto de instruções que pode ser executado mecanicamente em uma quantidade
finita de tempo). Conforme Péricas (2003), o algoritmo escolhido atualmente como padrão de
criptografia por possuir melhor estrutura para chave secreta é o Advanced Encryption
Standard (AES), utilizando chaves de 128, 192 e 256.
2.1.2 CRIPTOGRAFIA DE CHAVES PÚBLICAS
Esse método está baseado no conceito de “um par de chaves, uma chave privada e uma
chave pública. Uma das chaves é utilizada para cifrar a mensagem e a outra para decifrá-la.
No sistema de chaves públicas, cada pessoa tem que ter duas chaves, uma que fica
publicamente disponível e outra que deve ser mantida em segredo” (SANTOS, 2005). O sigilo
da chave privada é muito importante, pois a criptografia pública se baseia no fato de que a
chave privada é realmente privada, por isso só o emissor deve ter acesso. É mais
freqüentemente usada para certificar a origem do dado e a integridade.
A Figura 2 demonstra o funcionamento da criptografia de chave pública, que se dá da
seguinte forma: quando a origem deseja enviar uma mensagem ao destinatário, precisa
primeiro encontrar a chave pública dele. Feito isto, ela cifra sua mensagem utilizando a chave
19
pública de destinatário, despachando-a em seguida. Quando o destinatário recebe a
mensagem, ele a decifra facilmente com sua chave privada.
Fonte: Santos (2005) Figura 2: Criptografia de chave pública
O intruso, que interceptar a mensagem em redes inseguras, não conhecerá a chave
privada do destinatário, embora conheça sua chave pública. Mas não basta só este
conhecimento para que a mensagem seja decifrada. Em tal situação, “mesmo a origem, que
foi quem cifrou a mensagem com a chave pública do destinatário, não pode decifrá-la agora”
(SINGH, 2001).
A vantagem deste sistema é permitir que qualquer pessoa possa enviar uma mensagem
secreta, apenas utilizando a chave pública de quem irá recebê-la. Como a chave pública está
disponível, não há necessidade do envio de chaves como é feito no modelo de chave secreta.
A confidencialidade da mensagem garante que somente quem tiver acesso à chave privada
terá acesso às mensagens, e enquanto esta chave estiver segura pode-se assegurar a segurança
do método.
O algoritmo RSA (Rivest, Shamir, Adleman) é o método de criptografia que satisfaz os
requisitos exigidos para que a chave pública seja eficaz. “Este algoritmo usa chaves de 1024
bits formadas pela multiplicação de dois números primos de 512 bits” (PÉRICAS, 2003), o
20
que garante a segurança do processo, que se baseia na dificuldade de fatorar números primos
muitos grandes.
Em geral, a criptografia de chave pública mostra-se mais adequada em ambientes
inseguros com um grande número de usuários. Este sistema usualmente é aplicado de forma
complementar ao sistema de chaves secretas para torná-lo mais seguro.
2.2 ASSINATURA DIGITAL (INTEGRIDADE)
A assinatura digital é um outro benefício da criptografia. Utilizando chave pública, o
mecanismo de assinatura digital envolve dois objetivos: que o receptor possa verificar a
identidade declarada pelo emissor e que o emissor não possa mais tarde negar a autoria da
mensagem.
A assinatura digital não garante a confidencialidade da mensagem, pois qualquer
pessoa poderá ter acesso a mensagem apenas utilizando a chave pública da origem. Para que
haja confidencialidade é necessário combinar os dois métodos, criptografia e assinatura
digital.
A assinatura digital segundo Guilherme (2003) funciona da seguinte forma: o emissor
gera um código hash a partir do documento, cifra o código hash (resumo de mensagem)
usando a sua chave privada gerando uma assinatura criptografada. O documento original e a
assinatura cifrada trafegam pela Internet chegando até o receptor. Este por sua vez,
descriptografa a assinatura usando a chave pública do emissor, em seguida gera o valor do
hash da mensagem e compara o resultado com a assinatura (hash) decifrada. Se esses valores
forem iguais, é determinado que o documento não foi modificado após a assinatura do
mesmo, caso contrário, o documento ou assinatura foi alterado.
A assinatura digital obtida através do uso da criptografia de chave pública não pode ser
21
empregada de forma isolada, é necessário utilizar um mecanismo adequado para o emprego
da assinatura digital. Este mecanismo é a função hash, e “sua utilização como componente de
assinaturas digitais se faz necessário devido à lentidão dos algoritmos de chave pública. A
função hash oferece agilidade nas assinaturas digitais, além de integridade confiável”
(GUILHERME, 2003). Funciona como uma impressão digital de uma mensagem gerando, a
partir de uma entrada de tamanho variável, um valor fixo pequeno (resumo de mensagem).
Portanto, a característica essencial da assinatura digital é que ela deve garantir que uma
mensagem assinada só pode ter sido gerada com informações privadas do emissor. Em função
disso, uma vez verificada a assinatura com a chave pública, é possível posteriormente provar
para um terceiro, que só o proprietário da chave poderia ter gerado a mensagem.
2.3 CERTIFICADO DIGITAL (AUTENTICAÇÃO)
O certificado digital é um “documento contendo dados de identificação da pessoa ou
instituição que deseja comprovar a sua própria identidade. Serve igualmente para conferir a
identidade de terceiros” (GUILHERME, 2003). É devido aos certificados digitais que uma
transação eletrônica realizada via Internet torna-se segura, pois permite que as partes
envolvidas apresentem, cada uma, as suas reais identidades para comprovar quem são.
Os Certificados Digitais vinculam um par de chaves eletrônicas que podem ser usados
para criptografar e assinar informações digitais. Usados em conjunto com a criptografia, estes
fornecem uma solução de segurança completa, assegurando a identidade de uma ou de todas
as partes envolvidas numa transação.
Os certificados digitais evitam tentativas de substituição de uma chave pública por
outra. Para evitar isto aconteça, faz-se necessário o uso de certificados digitais de chave
22
pública, pois estes garantem segurança e autenticidade àqueles que acessam redes inseguras,
prevenindo o acesso a dados confidenciais.
O certificado do destinatário contém algo mais do que sua chave pública: contém
informações sobre o destinatário (seu nome, endereço e outros dados), é assinado por alguém
em quem a origem deposita sua confiança: uma autoridade de certificação ou Certification
Authority (CA), que funciona como um cartório eletrônico, conforme afirmam Eastlake e
Niles (2002).
O certificado digital funciona da seguinte forma: primeiro deve-se localizar a chave
pública da pessoa com quem se deseja comunicar e, segundo, deve-se obter uma garantia de
que a chave pública encontrada seja proveniente do destinatário. Após estabelecer um
processo de confiança entre os interlocutores, segundo Eastlake e Niles (2002), os certificados
desempenham um importante papel em um grande número de protocolos e padrões utilizados
na proteção de sistemas de comércio eletrônico.
Toda a comunicação na Internet é por natureza anônima e pública, o que dificulta
algumas transações, por isso o certificado digital tem tanta importância neste contexto.
23
3 APLICAÇÕES WEB
O nome Web vem do termo Word Wide Web (WWW) que representa “um sistema de
informações mundialmente distribuído, onde as informações são ligadas umas às outras por
links de hipertexto” (FIGUEIREDO, 2000).
A Web está disponibilizando aos seus usuários um volume de informação cada vez
maior. O conteúdo dinâmico surgiu rapidamente para dar aos usuários um serviço de
informação interativo, inclusive rastreamento de pacotes e compras on-line.
No início, o conteúdo Web era em sua grande maioria estático. Os documentos
Hypertext Markup Language (HTML) projetados para exibição e não intercâmbios de
informações eram distribuídos aos navegadores diretamente do sistema de arquivos do
servidor Web.
A adoção da Web como veículo de acesso a sistemas de informação trouxe novamente
a preocupação com a estrutura dos documentos. Primeiro, para fornecer o mesmo conteúdo
em formatos alternativos, personalizados para computadores, celulares, auto-atendimento
telefônico ou para impressão em papel; segundo, para possibilitar o acesso às informações por
outras aplicações, em vez de apenas por usuários.
O problema então era criar uma linguagem capaz de descrever qualquer tipo de
documento, exigindo extensibilidade, e, segundo Marchal (2000), preservando tanto a
facilidade de autoria do HTML, quanto a sua sintaxe simples para processamento por
software. Então surgiu a linguagem XML.
O Extensible Markup Language (XML) vem se estabelecendo como um padrão para
representação de dados semi-estruturados e vem sendo utilizado para representar dados que
serão manipulados por aplicações ou trocados na Web.
24
O XML tem a capacidade de perceber os eventos causados pelo usuário e responder de
forma apropriada. “O XML está embutido no código HTML, e o seu código fonte pode ser
visualizado pelo usuário, pois não é um código compilado” (LIGHT, 1999).�
3.1 REPRESENTAÇÃO DE DADOS EM APLICAÇÕES WEB
“O XML foi originalmente planejado para ser utilizado em documentos de sites, da
mesma maneira que Hypertext Markup Language (HTML)” (FORRISTAL e TRAXLER,
2002).
Por o XML ser extensível e auto-descritivo, ele pode ser utilizado em qualquer lugar
que haja a necessidade de troca de dados ou simplesmente distribuição dos mesmos.
Inicialmente espera-se que o XML seja muito usado para descrever informações sobre
páginas HTML. Posteriormente, aplicações como transações financeiras, notícias,
informações sobre tempo, registros de dados, bibliotecas e muitas outras serão possíveis
usuárias do XML.
Conforme afirma Furtado (2003), o XML tem um futuro de muitas aplicações na Web,
por exemplo, ao realizar uma busca as pessoas são levadas a qualquer site que tenha
referência a tal assunto não importando, por exemplo, se o direcionamento é para o assunto ou
para a venda de produtos sobre este assunto. O XML admitiria o processo de direcionar o
assunto, pois permite que tais dados possam ser facilmente combinados (essa combinação
seria feita via software em um servidor intermediário, estando os bancos de dados na
extremidade da rede o que facilitaria enormemente a busca). O que acontece hoje é que sem o
XML é necessário para a aplicação de procura saber como é estruturado e construído cada
banco de dados que armazena os dados de interesse, o que é praticamente impossível.
Outra aplicação seria dos dados poderem ser atualizados em partes, evitando que uma
25
pequena modificação no conjunto de dados implique na atualização do documento inteiro
novamente. Assim, somente os elementos modificados seriam enviados pelo servidor para o
cliente. Atualmente, uma modificação em um item de dados acarreta na necessidade de
atualização da página inteira. Dessa forma, os servidores têm menor sobrecarga, reduzindo a
necessidade de computação e reduzindo também a requisição de banda de transmissão para as
comunicações entre cliente e servidor. O XML também permite que novos dados sejam
adicionados aos já existentes, sem a necessidade de reconstrução da página.
3.2 XML
“O XML é uma linguagem de marcação de dados desenvolvida para a descrição de
dados (conteúdo)” (RAY, 2000). Está sendo rapidamente adotado como um meio de preservar
a estrutura em dados Web e fornecer um formato de mensagem padrão.
O XML não é uma linguagem que veio para substituir o HTML, pois foram criados
com objetivos diferentes. “O HTML está relacionado com a exibição de dados enquanto que o
XML está relacionado com a descrição dos dados. Os documentos são descritos em XML e
convertidos para HTML no momento da utilização” (PRENTICE, 1997).
O XML surgiu para suprir a carência deixada pelo HTML no desenvolvimento de
aplicações avançadas para a Internet, principalmente no que diz respeito àquelas aplicações
que precisam manipular um grande volume de dados.
Esta linguagem possibilita uma melhor estruturação da informação circulante na Web,
na medida em que permite a definição de documentos onde claramente são separados o
conteúdo, o significado e a apresentação. Os documentos em XML são fáceis de ser editados
(esta linguagem permite que o autor defina suas próprias tags e a própria estrutura do
documento) ou lidos, representando naturalmente estruturas de dados complexas e
26
hierárquicas. Juntando a isto as facilidades de formatação e validação, fica fácil compreender
a boa aceitação do XML.
Na prática, XML é um padrão para troca de informações entre diversas plataformas,
que apenas possibilita a descrição de dados em um arquivo de formato texto.
O XML é definido pelas seguintes especificações: Extensible Markup Language
(XML), define a sintaxe da XML; XML Pointer Language (XPointer) e XML Linking
Language (XLink), define um padrão para representar os links entre os recursos (além dos
links simples, como a tag da HTML, o XML possui mecanismos para ligar recursos múltiplos
e diferentes. A XPointer descreve como endereçar um recurso, e a XLink descreve como
associar dois ou mais recursos); Extensible Style Language (XSL), define a linguagem de
folhas de estilos padrão para o XML (EASTLAKE e NILES, 2002).
O XML é uma família de tecnologias, dentre elas está a XSL (Extensible Stylesheet
Language): uma ferramenta usada para transformar XML de uma estrutura para outra, não
importando se o resultado final é em HTML, XML ou o que você vier a determinar
(FORRISTAL e TRAXLER, 2002). Desta forma pode-se expor os documentos XML na Web.
Seu objetivo, porém, é modificar a estrutura de um documento XML, possivelmente gerando
um resultado em dialeto diferente.
O XML provavelmente irá complementar todas as tecnologias existentes no momento,
viabilizando a construção de sistemas mais úteis de forma mais eficiente.
3.2.1 DTD
“O Document Type Definition (DTD) é um conjunto de regras ou declarações que
permitem interpretar as informações usadas em arquivos XML, além de compartilhá-lo
através de muitas aplicações” (RAY, 2000). O DTD ajuda a validar os dados quando a
27
aplicação que os recebe não possui internamente uma descrição dos dados que está recebendo.
Os DTDs são velhos conhecidos dos desenvolvedores Web, pois é a linguagem
utilizada na definição dos padrões formais do HTML pelo World Wide Web Consortium
(W3C).
O DTD define a estrutura do documento, usando uma lista de elementos válidos, e
pode ser declarado dentro de um documento XML ou à parte. Os DTDs são opcionais e os
dados enviados com um DTD são conhecidos como dados XML válidos.
“Um analisador de documentos pode checar os dados que chegam analisando as regras
contidas no DTD para ter certeza de que o dado foi estruturado corretamente. Os dados
enviados sem DTD são conhecidos como dados bem formatados” (EASTLAKE e NILES,
2002). O que em outras palavras significa que o documento aceita todas as regras de
formatação especificadas.
A estrutura do DTD está baseada em uma gramática que permite declarar elementos,
atributos, entidades e notações. “Através de regras estruturais, ela define os elementos que
podem ser utilizados em um documento XML, quantas vezes eles podem aparecer e que
hierarquia deve ser seguida” (BRAGANHOLO, 2000).
3.3 XML PROTEGIDO
Há alguns anos, quando se começou a questionar a seriedade quanto à questão da
segurança digital, impulsionados pela crescente utilização da Internet como plataforma de
comunicação, começou-se a dar um destaque crescente à problemática da segurança, em
particular das aplicações Web que estão disponibilizadas na Internet para suportar processos
de negócio importantes, ou mesmo críticos em alguns casos.
A melhor maneira de proteger documentos XML na Web é através de certificados
28
digitais, pois seus métodos impedem que a assinatura eletrônica seja falsificada, e quando
usados em conjunto com a criptografia, como já mensionado anteriormente, há uma maior
segurança.
Devido a ordens de compra, pagamentos, recebimentos de entrega entre outras
operações que precisam de autenticação e confidencialidade, o XML precisa de segurança.
Em alguns casos, particularmente quando a transação envolve várias partes e precisa de
diferentes tipos de autenticação para diferentes destinatários.
Por razões de simplicidade e flexibilidade, o usuário pode desejar trabalhar com a
linguagem XML usando mecanismos de segurança. Devido à crescente importância dos
serviços Web, a sua utilização em processos internos em uma organização exige uma
avaliação de um problema fundamental: a segurança. Mais concretamente, deve ser avaliado o
impacto de algumas soluções para a segurança de serviços Web (criptografia e assinatura
digital do XML), no desempenho destes processos.
3.3.1 Criptografia do XML
O XML permite usar o código binário existente e a sintaxe do texto, obtendo a
informação criptografada com um texto cifrado contendo estruturas que podem criar,
manipular e analisar.
No Quadro 1 contém um exemplo de um documento XML, onde se verifica a ficha de
um cliente com número do cartão de crédito a ser criptografado.
29
Fonte: Forristal e Traxler (2002, p. 313) Quadro 1 – Exemplo de um documento XML
Caso o documento XML precise ser enviado a um destinatário e deseja-se criptografar
os dados do documento é necessário seguir a especificação representada pela tag
<EncryptedData> é responsável pela criptografia e decriptografia do documento, pois
“contém todos os elementos identificadores dos dados criptografados do documento”
(EASTLAKE e NILES, 2002). O resultado é mostrado no Quadro 2.
Fonte: Forristal e Traxler (2002, p. 313) Quadro 2 – Exemplo de um documento XML criptografado
Observa-se como característica relevante que os dados que estão localizados dentro do
elemento EncryptedData aparecem criptografados. Sua estrutura é de fácil compreensão e
visualização e permite a criptografia da mensagem inteira ou do conteúdo inteiro da
mensagem.
A parte da criptografia é a mais trabalhosa, pois a chave de sessão tem que ser gerada e
criptografada e algumas informações sobre ela devem ser incluídos no documento.
Conforme afirmam Eastlake e Niles (2002), para cada dado ou chave a ser
<?xml version=”1.0”?> <customer> <firstname>John</firstname> <lastname>Doe</lastname> <creditcard>
<number>4111111111111111</number> <expomont>12</expmonth> <expyear>2000</expyear>
</creditcard> <customer>
<?xml version=”1.0”?> <customer> <firstname>John</firstname> <lastname>Doe</lastname> <creditcard>
<xenc: EncryptedData xmlns:xenc= ‘http://www.w3.org/2000/11/temp-xmlenc’ Type=”Element”>
<xenc: CipherText>AbCd… .wXYZ</xenc:CipherText> </xenc:EncryptedData>
</creditcard> <customer>
30
criptografado, uma seqüência de passos precisam ser seguidos para que a criptografia XML
seja realizada com sucesso, conforme abaixo:
a) seleciona-se algoritmos e parâmetros para usar na criptografia do dado;
b) obtém-se a chave de criptografia do material;
c) adquire-se a seqüência para criptografar;
d) criptografa a seqüência usando a chave e o algoritmo de criptografia;
e) quinto, constrói o elemento que cifra o dado;
f) finalmente, constrói-se o elemento da criptografia do dado ou da criptografia da
chave.
A criptografia deve ser cuidadosa para preservar informações necessárias para o
sucesso do processo. Quando há compartilhamento de uma chave secreta entre múltiplos
destinatários, pode-se seguramente usar a chave somente para dados desejados. As aplicações
não deverão revelar nenhuma informação dos parâmetros ou algoritmos, para que não
enfraqueçam a criptografia ou comprometam o texto.
Segundo Eastlake e Niles (2002), a aplicação é responsável como parte do processo de
criptografia que, por conseqüência, será útil para decriptografia. Por exemplo, se a aplicação
deseja criptografar o dado em um pacote formatado XML, este precisa organizar o XML
identificando o tipo de resultado desejado com o tipo de atributo de elemento de criptografia.
A probabilidade da operação da decriptografia dependerá do suporte de aplicação da
criptografia.
A criptografia pode ser gerada para qualquer tipo de conteúdo digital, incluindo
documentos XML. A criptografia XML especifica como cifrar e decifrar documentos XML e
porções de documentos XML.
O algoritmo RSA (Rivest, Shamir, Adleman) em XML não é utilizado para criptografia
do documento, mas sim para a criptografia da chave de sessão, que fica junto com o
31
documento XML em um elemento separado, localizado em outro arquivo. Já o algoritmo
utilizado na criptografia do documento é o AES (Advanced Encryption Standard) com chaves
192 ou 256.
3.3.2 Assinatura digital do XML
O padrão XML de assinatura digital permite que documentos sejam assinados
digitalmente para o uso em operações XML. As assinaturas de documentos XML, assim como
as comuns, também possuem importantes características como autenticação e integridade dos
dados.
A assinatura de documentos XML tem a vantagem sobre a assinatura comum de poder
assinar somente partes específicas do documento XML, não sendo necessário assinar o
documento original inteiro. O fato de a assinatura digital poder ser feita somente sobre uma
parte do documento, não garante a integridade do documento inteiro, pois algumas partes
podem ser alteradas. Este fato não ocorre se a assinatura for aplicada ao documento XML
inteiro, pois quaisquer alterações feitas pelo usuário nos dados invalidarão a assinatura
original do documento.
O Quadro 3 expõe a estrutura de uma assinatura digital usando XML, sendo a
assinatura gerada a partir de um código hash.
32
Fonte: Eastlake e Niles (2002, p. 232) Quadro 3 – Exemplo da estrutura de uma assinatura digital usando XML
Analisando o Quadro 3, observa-se que “o elemento Signature corresponde à
construção primária da especificação da assinatura digital do XML. Esta é uma especificação
para descrever assinaturas digitais usando XML, e não existem limitações quanto ao que está
sendo assinado. O elemento SignedInfo consiste na informação que está de fato assinada. O
elemento CanonicalizationMethod contém o algoritmo usado para canonizar os dados, ou
estruturar os dados de uma forma comum, aceita por quase todos. O algoritmo usado para
converter o SignedInfo canonizado para o SignatureValue é especificado no elemento
SignatureMethod. O elemento Reference identifica o recurso a ser assinado e todos os
algoritmos usados para reprocessar os dados. O DigestMethod é o algoritmo aplicado aos
<Document…> <Field1…> …myriad content… </Field1…> <Field2…>…<subF2>…<subsubF2 a=”b”/>…</subF2>… <Field2…> <Signature> <SignedInfo> <CanonicalizationMethod Algorithm= “http://www.w3.org/TR/2001/REC-xml-c14n-20010315”/> <SignatureMethod Algorithm=”http://www.w3.org/2001/04/xmldsig-more#rsa-sha1”/> <Reference URI=” “>
<Transforms><Transforms Algorithm= ”http://www.w3.org/2000/09/xmldsig#enveloped-signature”/>
</Transforms> <DigestMethod
Algorithm=”http://www.w3.org/2000/09/xmldsig#sha1”/> <DigestValue>Szvb70MrKxJjY6bx8daFhQjV1fk= </DigestValue>
</Reference> </SignedInfo> <SignatureValue>
yFw+PrsMDBmvr0kaGme1tVwQEOLa2qiIiCZycoFDQ+jQ0F 58fhf4+BGAgA8mJvRLS067u/Sbm8NDQ18GBsoPDw=
</SignatureValue> <KeyInfo><X509Data><X509Certificate> zPrj46nf38G5ufIEBG7w8G5dXVaEhNBZWaqMjJiwsL/Dwz UhId0lpVYTE1bPz/rj4y/s7GNtbdaHh9t3dzxRUfqHh6Qj …
</X509Certificate></509Data></KeyInfo> </Signature> </Document>
33
dados depois de todas as transformações definidas terem sido aplicadas para gerar o valor
dentro do DigestValue. A assinatura de DigestValue acopla o conteúdo de recursos à chave do
assinante. O SignatureValue contém o valor real da assinatura digital” (FORRISTAL e
TRAXLER, 2002).
Segundo Eastlake e Niles (2002), a assinatura digital do XML associa alguns dados
com uma chave. A aplicação produz assinaturas que devem ter acesso aos dados para serem
marcados e para produzirem chave. Depois, uma aplicação pode verificar a assinatura, tendo
acesso à marcação dos dados e verificando a chave de assinatura (a chave de verificação pode
ou não ser a mesma chave de produção, depende o tipo de autenticação usada). Se a assinatura
é verificada, o verificador sabe que algumas aplicações com a produção da chave podem ter
produzido uma assinatura ou um hacker pode ter quebrado a criptografia de algoritmos.
Estes pontos não fazem referência ao significado de tudo. Alguns significados dados à
assinatura digital, além de fortemente conectado alguns dados com a chave, é uma
interpretação imposta por uma aplicação particular. Isto é comum para marcação dos dados
para incluir estruturas pretendidas para que sejam interpretadas como afirmação.
3.3.3 Utilizando a criptografia XML com a assinatura digital XML
É comum ter dados ou parte deles que necessitam ser confidenciais, uma forma de
torná-los ocultos é através de combinação da criptografia com a assinatura digital.
Segundo Eastlake e Niles (2002), precisa-se examinar cada caso individualmente para
saber se é necessário primeiro criptografar e então assinar ou assinar e depois criptografar,
pois até mesmo em um simples bloco de dados, existem múltiplas possibilidades. Existem três
possibilidades gerais que serão citados abaixo.
A primeira possibilidade, exibida na Figura 3, é a criptografia de um dado assinado e
34
com assinatura. Conforme Eastlake e Niles (2002), supõe-se que existe um dado assinado e
que o dado e o elemento Signature estão todos criptografados em um texto cifrado descrito
em um EncryptedData. Este tipo oculta o máximo de quantidade de dados, tornando a
criptografia mais eficaz.
Fonte: Eastlake e Niles (2002, p. 372)
Figura 3: Exemplo de criptografia de dado assinado e com assinatura (separado)
E após o processo de compactação, a estrutura do documento se apresenta a forma
apresentada na Figura 4:
Fonte: Eastlake e Niles (2002, p. 373)
Figura 4: Exemplo de criptografia de dado assinado e com assinatura (compactado)
35
O segundo caso citado por Eastlake e Niles (2002), é o da criptografia de dado
assinado, mas não com assinatura. O objetivo deste caso é somente criptografar o dado
assinado e não o elemento Signature. Visualiza-se o caso citado na Figura 5.
Fonte: Eastlake e Niles (2002, p. 374)
Figura 5: Exemplo de criptografia de dado assinado e sem assinatura (separado)
Por fim, observa-se na Figura 6, conforme afirmam Eastlake e Niles (2002) o fato da
assinatura de um dado criptografado. Nesta situação o texto cifrado e o elemento
EncryptedData são assinados. No caso de alguma pessoa tentar modificar a mensagem
original, a ação será descoberta quando a assinatura falhar.
36
Fonte: Eastlake e Niles (2002, p. 375)
Figura 6: Exemplo de assinatura de texto cifrado e criptografado (separado)
37
4 DESENVOLVIMENTO DO APLICATIVO
O aplicativo desenvolvido neste trabalho demonstra duas formas de tornar um
documento seguro, sendo estas através da criptografia e da assinatura digital de dados de uma
página Web baseados em um cadastro de clientes, onde se pretende garantir o sigilo e
integridade dos dados.
O aplicativo executável em microcomputador tem a função de gerar um conteúdo
XML que possa ser transmitido de forma segura e íntegra pela Web.
4.1 REQUISITOS PRINCIPAIS DO APLICATIVO
Este aplicativo deve ter os seguintes requisitos funcionais:
a) ler uma base de dados de clientes;
b) gerar lista de dados de clientes em XML;
c) gerar lista de dados de clientes em XML criptografado e XML decriptografado;
d) assinar digitalmente a lista de dados de clientes em XML.
Requisitos não funcionais são:
a) base de dados em arquivo texto;
b) rodar no sistema operacional Windows;
c) apresentar uma interface intuitiva, onde o usuário seleciona sua opção em um
campo do aplicativo e este lhe fornece o documento com o tipo de segurança
desejado (criptografado ou assinado).
38
4.2 ESPECIFICAÇÕES DO SISTEMA
Para a especificação do sistema adotou-se a fluxogramação para demonstrar o fluxo
dos principais processos executados.
Na Tabela 1 são enumerados os sub-processos juntamente com a descrição de cada um
deles.
Tabela 1 – Sub-processos do aplicativo
Nome Descrição Resultado Obtido
Processo A Gerar XML
Normal
Arquivo XML Normal com conteúdo da base
de dados apresentado na forma de tabela
Processo B Gerar XML
Criptografado
Arquivo XML com conteúdo da base de dados
criptografado apresentado na forma de tabela
Processo C Gerar XML
Decriptografado
Arquivo XML com conteúdo da base de dados
decriptografados apresentado na forma de tabela
Processo D Gerar XML
Assinado
Arquivo XML com conteúdos da base de dados
apresentados na forma de tabela e com assinatura
digital do contexto
Na Figura 7 observa-se o detalhamento do processo A, onde este irá buscar sua base de
dados em um arquivo texto e inicia o processo da transformação do documento para XML.
39
Figura 7: Fluxograma do Processo A
A Figura 8, apresenta o detalhamento do processo B, que é executado no aplicativo.
Neste processo é determinada a criptografia do documento XML.
Início
Abre base de dados e cria arquivo XML de saída
Lê base de dados
Escreve dado no arquivo XML
Último dado? Não Termina
arquivo XML
Sim
Escreve no arquivo cabeçalho XML
Fim
40
Figura 8: Fluxograma do Processo B
A Figura 9 apresenta o detalhamento do processo C, que é executado no aplicativo.
Neste processo é feita a decriptografia do documento, utilizando o arquivo XML
criptografado como base para sua geração. Como resultado apresenta os dados
decriptografados para validação.
Início
Abre arquivo XML e cria arquivo para XML criptografado
Lê dado do arquivo XML
Escreve dado no arquivo XML critografado
Último dado?
Não
Fim
Sim Precisa criptografia?
criptografa
Sim Não
41
Figura 9: Fluxograma do Processo C
A Figura 10 apresenta o detalhamento do processo D, que é executado pelo aplicativo.
Este processo é responsável pela assinatura digital dos dados do documento XML normal.
Início
Abre arquivo XML criptografado e cria arquivo para XML
decriptografado
Lê dado do arquivo XML criptografado
Último dado?
Não
Fim
Sim Precisa decriptografia?
Decriptografia
Sim Não
Escreve dado no arquivo XML decriptografado
42
Figura 10: Fluxograma do Processo D
4.3 IMPLEMENTAÇÃO DO SISTEMA
O aplicativo foi desenvolvido utilizando uma base de dados de clientes com seus
respectivos nomes, números dos cartões de crédito e datas de validade para que pudessem ser
Fim
Cria assinatura do documento canonizado XML
Início
Abre base de dados e cria arquivo XML a ser assinado para saída
Lê base de dados
Escreve dado no arquivo XML
Último dado? Não
Termina arquivo XML
Sim
Escreve no arquivo cabeçalho XML assinado
Lê arquivo XML a ser assinado
Salva arquivo XML assinado
43
ilustradas as funções do XML protegido sobre os dados.
4.3.1 Ferramentas e bibliotecas utilizadas
Para a implementação do aplicativo foi utilizado o ambiente de desenvolvimento
Microsoft Visual Basic 6.0. Esta ferramenta serve como ambiente para a compilação e a
execução das funções de cada botão de comando do aplicativo.
Para o desenvolvimento do aplicativo foram utilizados alguns algoritmos e bibliotecas,
são eles: Serpent, DOMDocument, MSXML.
Conforme afirma a Tropsoft (2005), o algoritmo Serpent foi projetado por Ross
Anderson, Eli Biham e Lars Knudsen como um candidato para o padrão avançado de
criptografia. Foi selecionado como um dos cinco finalistas na competição do Advanced
Encryption Standard (AES). Fornece aos seus usuários um nível elevado de garantia de que
nenhum ataque seja bem sucedido. Para conseguir isto, os desenvolvedores do algoritmo
limitaram-se a mecanismos bem compreendidos de criptografia, de modo que pudessem
confiar na larga experiência e nas técnicas provadas de cifra de bloco e calculassem a
criptografia. Os desenvolvedores do algoritmo garantem que o Serpent tem uma vida de
serviço ao menos de um século.
O algoritmo Serpent usa cifra do bloco de 128-bit, significando que os dados
criptografados e decriptografados estão nos pedaços 128-bit. O algoritmo Serpent usa 32
círculos, ou iterações do algoritmo principal. O fato de usar muitos círculos significa que é o
mais lento dos cinco finalistas do AES, mas a filosofia dos desenvolvedores do projeto é de
que a segurança vem sempre antes da velocidade. A execução da criptografia confidencial do
Serpent usa uma chave de 256 bits. O tamanho da chave é o maior possível para assegurar que
o usuário tenha sempre a melhor segurança possível. Se uma chave mais curta for fornecida
44
pelo usuário, o próprio algoritmo do Serpent transforma a chave em 256 bits. O Serpent inclui
uma permutação inicial e final de nenhum significado criptografico; estas permutações são
usadas para otimizar os dados antes da criptografia. A descrição detalhada do algoritmo real é
contida no papel oficial do Serpent submetido para o AES pelos desenvolvedores do
algoritmo. O papel é puramente técnico e é necessário um determinado grau de proficiência
matemática ao leitor a fim compreendê-lo. O Serpent agora se encontra completamente no
domínio público, não sendo imposta nenhuma limitação em seu uso.
Segundo afirmação da Microsoft (2003), a biblioteca DOMDocument suporta
características caching, validação do esquema e de sustentação da linguagem do trajeto do
XML (XPath). O XML DOM fornece um navegador de classes que refletem diretamente em
especificações do modelo do objeto original da W3C (DOM). Estas classes permitem
construir um original do XML na memória. Pode-se compilar e validar os originais de XML
com um DTD ou um schema. A execução de Microsoft DOM fornece relações com o Visual
Basic e Microsoft C++. Os conceitos introduzem algumas das características fundamentais
que se relacionam ao DOM.
Como cita a Microsoft, as bibliotecas do msxml5*.dll fornecem tópicos de referência
para o Application Programming Interface (API) usado em tarefas de programação que usam
as outras bibliotecas do API do núcleo de MSXML (assinaturas de DOM, de SAX, de SOM,
de XML Digital). O API de MSXML é um conjunto de objetos COM que fornece a
funcionalidade da sustentação do DOM.
Com o Visual Basic (VB), a aproximação típica à experimentação com um
componente do modelo do objeto, tal como a biblioteca MSXML3.dll, deve criar um projeto
novo do padrão EXE, e adicionar uma referência à biblioteca do tipo de MSXML3.dll
(Microsoft XML, versão 3.0). Neste momento, o browser visual do objeto pode ser usado
para examinar as propriedades, os métodos, e os eventos para a relação de sua escolha.
45
Entretanto, desde que o componente de MSXML é uma inspeção prévia da tecnologia,
não há nenhum perigo em qualquer um tentar enviar este exemplo em um ambiente da
produção.
4.3.2 Implementação do software
A Figura 11 apresenta a tela onde contém as alternativas de código gerador de XML
protegido a partir de uma base de dados de texto.
Figura 11: Código gerador de XML a partir de base de dados Texto
O botão Gerar XML Normal ativa a função para criar um documento XML a partir
de um documento texto. Após o clique e a confirmação do documento ter sido criado com
sucesso, é apresentado o documento criado na tela.
Quadro 4 – Trecho do documento texto
No Quadro 4 pode-se visualizar como são apresentados os dados do cliente no arquivo
texto e o Quadro 5 mostra os mesmos dados só que visto em XML.
Nome: João S. da Silva Número: 7586-4532-6575-2435 Validade: 05/06
46
Quadro 5 – Documento XML normal
Os dados do cliente em XML normal são apresentados no browser da forma em que se
apresenta na Figura 12.
Figura 12: Tela do documento XML normal
O documento gerado exposto na tela valida a implementação deste comando sobre o
documento texto transformando-o em documento XML normal, pois o documento atingiu o
objetivo específico esperado.
O botão Gerar XML criptografado permite que a criptografia do documento XML
seja realizada a partir do documento XML normal, deixando os dados desejados de forma
ilegível, desta forma o usuário pode tornar seus dados seguros na rede. Selecionada esta opção
e após a confirmação do aplicativo, é apresentado o documento criado na tela.
No Quadro 6, pode-se visualizar o documento que contém a criptografia onde se
observa em comparação com o Quadro 5, que os dados criptografados são o número do cartão
de crédito e a data de validade do cartão do cliente.
No desenvolvimento da parte de programação da criptografia foi utilizado o algoritmo
Serpent para criptografar os dados do cliente.
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet href="Cards.xsl" type="text/xsl"?> <pd:Cards xmlns:pd="x-schema:Cards.xml"> <pd:Card> <pd:CardNome>João S. da Silva</pd:CardNome> <pd:CardNumero>7586-4532-6575-2435</pd:CardNumero> <pd:CardValidade>05/06</pd:CardValidade> </pd:Card> </pd:Cards>
47
Quadro 6 – Documento XML criptografado
No browser os dados serão apresentados como se pode visualizar na Figura 13.
Figura 13: Tela do documento XML criptografado
O aplicativo gera o documento XML criptografado exposto na tela, validando a
implementação deste comando, desta forma atingindo o objetivo específico esperado.
Selecionado o botão Gerar XML decriptografado obtém-se o documento XML
decriptografado, no qual os dados se apresentarão da mesma maneira em que foram expostos
no documento XML normal. Este comando é gerado a partir do documento XML
criptografado, transformando os dados da forma ilegível para a forma legível, ou seja, resulta
no processo inverso da criptografia. Ao clicar no botão e após a confirmação da sua criação o
documento aparecerá na tela.
Analisando o Quadro 7, pode-se comparar à forma que o dado foi apresentado após ser
gerado. Trazendo seus dados de forma clara ao contrário do Quadro 6.
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet href="Cards.xsl" type="text/xsl"?> <pd:Cards xmlns:pd="x-schema:Cards.xml"> <pd:Card> <pd:CardNome>João S. da Silva</pd:CardNome> <pd:CardNumero>D3FFBFF7FCFD87046013E4C5B594D1DA3815EABD6077BAB4691CB2FE09BCDA70</pd:CardNumero> <pd:CardValidade>A553F63235CC80183B6579080110F827</pd:CardValidade> </pd:Card> </pd:Cards>
48
Quadro 7 – Documento decriptografado
No trecho do código da programação da decriptografia o algoritmo Serpent também é
utilizado, assim como na criptografia, só que fazendo o processo inverso.
O browser apresenta os dados dos clientes na forma decriptografada conforme a Figura
14.
Figura 14: Tela do documento XML decriptografado
Avaliando o documento XML decriptografado gerado e exposto na tela, pode-se
visualizar que o resultado da implementação tingiu o objetivo específico esperado pelo
comando.
A função do botão de comando Gerar XML assinado é fazer com que o documento
XML normal seja assinado digitalmente, o que garante ao receptor saber que lhe enviou o
documento. Após clicar no botão e for confirmada a criação do documento, este aparecerá na
tela.
No Quadro 8, pode-se observar que o documento está composto com o elemento
Signature, o que permite ao documento estar assinado digitalmente.
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet href="Cards.xsl" type="text/xsl"?> <pd:Cards xmlns:pd="x-schema:Cards.xml"> <pd:Card> <pd:CardNome>João S. da Silva</pd:CardNome> <pd:CardNumero>7586-4532-6575-2435</pd:CardNumero> <pd:CardValidade>05/06</pd:CardValidade> </pd:Card> </pd:Cards>
49
Quadro 8 – Documento XML normal assinado
Na tela da Figura 15, pode-se visualizar a forma com que o browser apresenta a
assinatura digital em um documento e como o usuário tem acesso a ela.
<?xml version="1.0" encoding="ISO-8859-1"?> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:Reference URI="#Cards"> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <ds:DigestValue/> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue /> <ds:Object Id="Cards" xmlns:pd="x-schema:Cards.xml"> <ds:Card> <ds:CardNome>João S. da Silva</ds:CardNome> <ds:CardNumero>7586-4532-6575-2435</ds:CardNumero> <ds:CardValidade>05/06</ds:CardValidade> </ds:Card> <ds:Card> <ds:CardNome>Fernando Santos</ds:CardNome> <ds:CardNumero>4965-4158-7625-9863</ds:CardNumero> <ds:CardValidade>04/06</ds:CardValidade> </ds:Card> <ds:Card> <ds:CardNome>Carlos Augusto Costa</ds:CardNome> <ds:CardNumero>1734-2758-1211-6644</ds:CardNumero> <ds:CardValidade>11/06</ds:CardValidade> </ds:Card> <ds:Card> <ds:CardNome>Fernando Renault Santos</ds:CardNome> <ds:CardNumero>4965-4155-7625-9863</ds:CardNumero> <ds:CardValidade>04/05</ds:CardValidade> </ds:Card> </ds:Object> </ds:Signature>
50
Figura 15: Tela do documento XML assinado digitalmente
A tela apresentada na opção deste comando valida a implementação do aplicativo
comprovando sua eficácia, pois a assinatura digital do documento exposto na tela obtém o
resultado esperado.
O comando Sair permite sair do sistema.
51
5 CONCLUSÃO
As redes têm sido cada vez mais difundidas pela necessidade de troca de dados e ao
mesmo tempo, é difícil quem não se importe em ter seus dados ou documentos invadidos. Em
função disso, várias técnicas têm sido desenvolvidas para manter os dados longe de invasores,
pois estes podem causar danos, alterações ou mesmo o roubo de dados.
Atualmente tem-se desenvolvido muitos softwares, cada vez mais sofisticados, para
tentar limitar o número de ataques, por isto a intenção deste trabalho foi utilizar a tecnologia
de linguagem de marcação de dados desenvolvida para a descrição de dados chamada XML,
que permite manipular um grande volume de dados, e provavelmente irá complementar as
tecnologias existentes no momento.
O estudo teórico se conclui após a pesquisa das formas de proteção (criptografia e
assinatura digital) para documentos disponibilizados na rede.
A partir deste estudo, verificou-se a viabilidade de desenvolver um aplicativo que
demonstrasse ser uma ferramenta eficaz na proteção de dados XML criados através de um
documento texto.
O aplicativo permitiu comprovar os conceitos até então analisados em livros. A
utilização da linguagem para a programação da parte de criptografia e assinatura digital,
mostrou-se um tanto complicada, levando um maior período para adaptação e aprendizado.
Cada comando efetuado pelo aplicativo forneceu o resultado esperado, desta forma
pode-se verificar sua eficiência.
O aplicativo foi desenvolvido rodando em um computador local e sua aplicação seria
garantir que os dados estão armazenados de forma segura no computador.
É necessário lembrar que as ferramentas que são disponibilizadas para proteção de
documentos são consideradas seguras até que haja uma primeira invasão, por este motivo
52
novas técnicas têm sido criadas e aprimoradas. Pode-se assegurar então, que este ciclo de
novas ferramentas não terá fim até se esgotar as possibilidades de invasões.
5.1 EXTENSÕES
Este trabalho pode ser incrementado com desenvolvimento de um outro botão de
comando onde se possa verificar a assinatura digital, desta forma o usuário poderia comparar
a assinatura que o documento traz, com o valor do hash da mensagem gerada, para saber se
houve alteração do documento.
Outra forma de incrementar o trabalho, seria disponibilizar este aplicativo em um
servidor Web para permitir a troca de informações sigilosas e/ou assinada via Web.
No aplicativo foi utilizada a criptografia de chave secreta, uma outra opção para um
trabalho futuro seria implementar a chave pública, para que não haja a necessidade de
compartilhar a chave anteriormente.
53
REFERÊNCIAS BIBLIOGRÁFICAS
BRAGANHOLO, Vanessa P. Estudo de esquemas em XML. 2000. 60 f. Dissertação (Pós-Graduação em Computação) – Curso de Pós-Graduação em Computação, Universidade Federal do Rio Grande do Sul, Porto Alegre.
EASTLAKE, D. E.; NILES, K. Secure XML: the new syntax for signature and encryption. Boston: Addison-Wesley, 2002. 532p.
FIGUEIREDO, J. Segurança Máxima: o guia de um hacker para proteger seu site na Internet e sua rede. Tradução Edson Furmankiewicz. Rio de Janeiro: Campus, 2000. 826p.
FORRISTAL, J.; TRAXLER, J. Site Seguro: aplicações Web. Rio de Janeiro: Alta Books, 2002. 490p.
FURTADO, Miguel B. J. XML: Extensible Markup Language. Rio de Janeiro, [2003]. Disponível em: <http://www.gta.ufrj.br/grad/00_1/miguel/index.html>. Acesso em: 7 fev. 2005.
GUILHERME, J. Criptografia, chaves públicas e assinatura digital, para leigos. [2003]. Disponível em: <http://sbis.org.br/Criptografia.doc>. Acesso em: 10 fev. 2005.
LIGHT, R. Iniciando em XML. Tradução Neilande de Moraes. São Paulo: Mackron Books, 1999.
MARCHAL, B. XML: conceitos e aplicações. São Paulo: Berkeley Brasil, 2000. xv, 584p.
MICROSOFT. XML for MSXML. [2003]. Disponível em: <http://msdn.microsoft.com>. Disponível em: 21 maio 2005.
PÉRICAS, F. A. Redes de computadores: conceitos e a arquitetura Internet. Blumenau: Edifurb, 2003. 156p.
PRENTICE, H. XML Aplicações Práticas. Tradução, Victor Hugo da Paixão Alves. Rio de Janeiro: Campus, 1997.
RAY, E. R. Aprendendo XML. Tradução Daniel Vieira. Rio de Janeiro: Campus, 2000. 372p.
SANTOS, L. C. Como funciona o criptografia? (Rede). Rio de Janeiro, [2005]. Disponível em: <http://www.clubedasredes.eti.br/rede0009.htm>. Acesso em: 5 março 2005.
SINGH, S. O livro dos códigos. Tradução Ana Falcão Bastos. Lisboa: Temas & Debates, 2001, 402p.
54
TROPSOFT. Serpent Encryption. Disponível em: <http://www.tropsoft.com>. Acessado em: 20 maio 2005.