Buscar

2014 - 2Sem - Luciano Lopes da Silva

Prévia do material em texto

Luciano Lopes da Silva 
 
 
ANÁLISE DA UTILIZAÇÃO DA CRIPTOGRAFIA CP-ABE PARA 
GARANTIA DA CONFIDENCIALIDADE DE DADOS 
 
 
 
 
Trabalho de conclusão de curso apresentado ao 
Instituto Federal de São Paulo, como parte dos 
requisitos para a obtenção do grau de Tecnólogo 
em Sistemas para Internet. 
 
Área de Concentração: Segurança da 
Informação 
 
 
 
Orientador: Prof. Roan Simões da Silva 
 
 
 
 
 
 
São João da Boa Vista 
2014 
Autorizo a reprodução e divulgação total ou parcial deste trabalho, por qualquer 
meio convencional ou eletrônico, para fins de estudo e pesquisa, desde que 
citada a fonte. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Ficha catalográfica preparada pela Seção de Tratamento 
 da Informação do Serviço de Biblioteca – IFSP 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Silva, Luciano Lopes. 
 Análise da Utilização da Criptografia CP-ABE para 
Garantia da Confidencialidade de Dados. / Luciano Lopes 
da Silva; orientador Roan Simões da Silva. São João da 
Boa Vista, 2014. 
 
 
 Trabalho de Conclusão de Curso, IFSP, 2014. 
 
 
1. Segurança da Informação. 2. Criptografia. 3. 
Criptografia baseada em atributos. 
 
I. Título 
 
 
 
AGRADECIMENTOS 
 
“Nenhum homem é uma ilha, completo em si próprio; cada ser humano é 
uma parte do continente, uma parte de um todo.” John Donne (1572-1631), 
poeta inglês, “Meditações XVII”. 
 
Primeiramente a Deus por haver me carregado quando meu ânimo e forças 
se esvaiam, garantindo que este reles mortal conseguisse chegar ao final 
desta trajetória. 
À minha esposa Fernanda e ao meu filho Isaac pela paciência frente à minha 
distância do lar para dedicar-me a este projeto. 
 Ao professor Roan e ao professor David Buzzato pelas orientações no 
desenvolvimento deste trabalho. 
Por fim, aos meus colegas de classe, nobres mancebos, pelo apoio moral e 
pelo companheirismo ao longo destes seis semestres de curso. 
A todos a minha gratidão! 
 
RESUMO 
 
SILVA, L. (2014). Análise da Utilização da Criptografia CP-ABE para Garantia da 
Confidencialidade de Dados. Trabalho de Conclusão de Curso - Instituto Federal de São 
Paulo, São João da Boa Vista, 2014. 
 
 A criptografia é o meio pelo qual se transforma o texto plano em texto ilegível com o 
objetivo de garantir, dentre outros, a confidencialidade das informações. Neste contexto, o 
presente trabalho analisa a viabilidade da utilização, a aplicabilidade e a eficiência de um tipo 
de criptografia específica denominada Criptografia Baseada em Atributos com Políticas de 
acesso no texto cifrado. 
Este esquema de criptografia se difere dos demais por permitir que, a partir de uma 
única chave pública e com a definição de políticas de acesso (formada por atributos e 
operadores lógicos), o arquivo seja criptografado e somente poderá ser acessado por quem 
possua em suas chaves privadas os atributos definidos. Este esquema permite que o arquivo 
criptografado defina quem o pode acessar. 
O resultado é um arquivo criptografado ilegível (confidencial) e pouco maior que o 
arquivo plano, o que garante o uso razoável da capacidade de armazenamento, demonstrando, 
por estes aspectos, ser viável sua utilização por qualquer tipo de usuário. 
Outro resultado obtido é a possibilidade de acesso do arquivo criptografado (formato 
texto ou não) via ferramenta editora de texto. Em que pese o arquivo ser aberto, seu conteúdo 
permanece ilegível. O que podem ser visualizados são os atributo utilizados na confecção da 
política de acesso, no entanto, esta informação não garante a quem acessou o arquivo a 
possibilidade de geração de chaves privadas que acessem os arquivos, visto que, no momento 
da geração das chaves e da encriptação, outras variáveis são necessárias e, estas, não são 
demonstradas pelo conteúdo acessado. 
Como solução para este problema sugere-se a utilização de métodos criptográficos 
auxiliares, como MD5 ou similares, para criptografar os atributos antes de utilizá-los. A 
criptografia dos atributos geraria uma string irreconhecível que, se misturaria ao conteúdo 
interno do arquivo criptografado via método CPABE. 
A grande dificuldade levantada refere-se ao uso deste esquema por comandos através 
de terminal, o que restringe o seu uso aos usuários de conhecimento intermediário e avançado. 
Neste contexto foi desenvolvida uma aplicação Java Web que faz a interface entre o usuário e 
os algoritmos de criptografia, permitindo que através da utilização do ambiente gráfico, haja 
interação e a encriptação/decriptação dos arquivos. 
A aplicação desenvolvida, após realização de testes de funcionamento, demonstrou ser 
eficiente na tarefa de tornar transparente ao usuário a geração de chaves privadas, a 
encriptação e a decriptação. No entanto, há que se realizar ajustes referentes a criação de 
métodos de aferição das regras de montagem da linha de comando, da política de acesso e da 
nomeação dos arquivos, antes da submissão ao shell para execução, de modo a permitir que 
somente sejam executadas caso estejam corretas. Após ajustes deverão ser executados testes 
de usabilidade com usuários diversos (comuns e avançados) com vistas a melhorar a 
experiência do usuário e detectar possíveis falhas no sistema. 
 
Palavras-chave: 
1. Segurança da Informação. 2. Criptografia. 3. Criptografia baseada em atributos. 
 
ABSTRACT 
 
SILVA, L. (2014). Analysis of the use of CP-ABE cryptography for Assurance 
Confidentiality of Data. Course Conclusion Project – Instituto Federal de São Paulo, São 
João da Boa Vista, 2014. 
 
 
 
Encryption is the means by which transforms the plaintext into unreadable in order to 
ensure, among other things, the confidentiality of information text. In this context, this paper 
analyzes the feasibility of using the applicability and efficiency of a specific type of 
encryption called Ciphertext-Policy Attribute-Based Encryption (CPABE). 
This encryption scheme differs from others by allowing, from a single public key and 
the definition of access policies (formed by attributes and logical operators), the file is 
encrypted and can be accessed by those who are only in their private keys defined attributes. 
This scheme allows the encrypted file set who can access. 
The result is an unreadable encrypted file (confidential) and slightly larger than the flat 
file, which ensures reasonable use of storage capacity, demonstrating, for these aspects, 
feasible to use for any type of user. 
Another result is the ability to access the encrypted file (text format or not) via text 
editor tool. Despite the file is opened, its contents remain unreadable. What can be seen is the 
attribute used in the manufacture of access policy, however, this information does not 
guarantee who accessed the file the possibility of generation of secret keys to access the files, 
since at the time of generation of keys and encryption, other variables are needed, and these 
are not demonstrated by the content accessed. 
As a solution to this problem is suggested to use auxiliary cryptographic methods, 
such as MD5 or similar attributes to encrypt them before use. The encryption of attributes 
would generate an unrecognizable string that would mix the internal contents of the encrypted 
file via CPABE method. 
The difficulty raised relates to the use of this scheme by commands through terminal, 
which restricts its use to the users of intermediate and advanced knowledge. In this context a 
Java Web application was developed that interfacesbetween the user and the encryption 
algorithms, allowing using the graphical environment, there is interaction and the encryption / 
decryption of files. 
The application developed after carrying out functional tests, proved to be efficient in 
the task of making transparent to the user to generate private keys, encryption and decryption. 
However, one has to make adjustments for the creation of measurement methods of assembly 
rules the command line, the access policy and the appointment of files, before submission to 
the shell for execution, to allow only be executed if they are correct. After adjusting usability 
tests should be run with multiple users (common and advanced) in order to improve the user 
experience and to detect possible system failures. 
 
Keywords: 1. The Information Security. 2. Encryption. 3. Attribute-Based Encryption.
LISTA DE FIGURAS 
Figura 1 – Criptografia ...................................................................................... 19 
Figura 2 – Criptografia Simétrica ...................................................................... 20 
Figura 3 – Criptografia Assimétrica .................................................................. 22 
Figura 4 – Exemplo de Árvore de Acesso ........................................................ 25 
Figura 5 – Funcionamento do Algoritmo Setup ................................................ 26 
Figura 6 – Funcionamento do Algoritmo Encrypt ............................................. 27 
Figura 7 – Funcionamento do Algoritmo KeyGen ............................................. 27 
Figura 8 – Funcionamento do Algoritmo Decrypt ............................................. 28 
Figura 9 – Funcionamento do Algoritmo Delegate ........................................... 29 
Figura 10 – Usabilidade e Utilidade .................................................................. 35 
Figura 11 – Etapas de Desenvolvimento .......................................................... 35 
Figura 12 – Total de Incidentes Reportados ao CERT.br por Ano ................... 38 
Figura 13 – Incidentes categorizados como Invasão, reportados ao CERT.br. 38 
Figura 14 – Total de Incidentes Reportados ao CAIS por Ano ......................... 39 
Figura 15 – Relacionamento Usuários X Atributos ........................................... 41 
Figura 16 – Árvore de Acesso .......................................................................... 41 
Figura 17 – Shell comando cpabe-setup .......................................................... 42 
Figura 18 – Shell comando cpabe-keygen ....................................................... 43 
Figura 19 – Shell comando cpabe-enc ............................................................. 44 
Figura 20 – Política de Acesso ......................................................................... 44 
Figura 21 – Shell comando cpabe-dec ............................................................. 45 
Figura 22 – Estrutura do Projeto CpabeEncriptor ............................................. 48 
Figura 23 – Ação “Cadastrar” da classe AtributoServlet .................................. 50 
Figura 24 – Método salvar da classe AtributoDAO ........................................... 51 
Figura 25 – Telas de Listagem de Atributos e Usuários ................................... 51 
Figura 26 – Servlet UploadDecriptacaoServet ................................................. 52 
Figura 27 – Tela JSP Gerar Chave Privada (modo simples) ............................ 53 
Figura 28 – Tela JSP Gerar Chave Privada Advanced .................................... 54 
Figura 29 – Classe ExecutarShell .................................................................... 55 
Figura 30 – Ação “gerar_chave_privada” (modo simples) ................................ 56 
Figura 31 – Ação “gerar_chave_privada” (modo Avançado) ............................ 57 
Figura 32 – Ação “criptografar” (modo simples) ............................................... 58 
Figura 33 – Tela JSP “Encriptar Advanced” ...................................................... 59 
Figura 34 – Ação “criptografar” (modo avançado) ............................................ 59 
Figura 35 – Ação “descriptografar” ................................................................... 60 
Figura 36 – Arquitetura da Aplicação e Diagrama de Casos de Uso ................ 61 
Figura 37 – Tela JSP de Boas Vindas .............................................................. 61 
Figura 38 –Telas JSP de Cadastro Usuários/Atributos ..................................... 62 
Figura 39 – Telas JSP de Encriptar (modo simples) ......................................... 63 
Figura 40 – Tela JSP de Decriptar .................................................................... 64 
Figura 41 – Tela Html de Confirmação de Execução de Comando e link para 
Download ....................................................................................... 65 
Figura 42 – Tela JSP de Orientações CPABE .................................................. 66 
Figura 43 – Tela JSP de Tutorial ...................................................................... 66 
Figura 44 – Arquivo extensão pdf criptografado ............................................... 67 
Figura 45 – Arquivo extensão png criptografado .............................................. 68 
Figura 46 – Arquivo extensão docx criptografado ............................................. 68 
Figura 47 – Arquivo extensão txt criptografado ................................................ 69 
Figura 48 – Arquivo extensão docx criptografado (aceitando a opção de 
conversão) ..................................................................................... 69 
Figura 49 – Arquivo extensão png criptografado (aceitando a opção de 
conversão) ..................................................................................... 71 
Figura 50 – Arquivo extensão pdf criptografado (aceitando a opção de 
conversão) ..................................................................................... 71 
Figura 51 – Gráfico Encriptação X Aumento ..................................................... 73 
LISTA DE TABELAS 
Tabela 1 – Relação Número de usuários X Chaves – Contexto Simétrico ...... 21 
Tabela 2 – Relação Número de usuários X Chaves – Contexto Assimétrico ... 22 
Tabela 3 – Variação do Tamanho dos arquivos após encriptação ................... 72 
 
 
LISTA DE SIGLAS 
 
ABE Attribute-Based Encryption (Criptografia Baseada em Atributos) 
CAIS Centro de Atendimento a Incidentes de Segurança. 
CERT.br Centro de Estudos, Resposta e Tratamento de Incidentes de Segurança no 
Brasil 
CP-ABE Ciphertext-Policy Attribute-Based Encryption (Criptografia Baseada em 
Atributos com políticas no cifro-texto) 
FIBE Fuzzy Identity-Based Encryption (Criptografia baseada em identidade difusa) 
HTML HyperText Markup Language (Linguagem de Marcação de Hipertexto) 
IBE Identity-Based Encryption (Criptografia baseada em Identidade) 
JSP JavaServer Pages 
KP-ABE Key-Policy Attribute-Based Encryption (Criptografia Baseada em Atributos 
com políticas na chave) 
PBC Pairing-based cryptography (Criptografia baseada em emparelhamento) 
SGBD Sistema de Gerenciamento de Banco de Dados 
SQL Structured Query Language (Linguagem de Consulta Estruturada) 
SUMÁRIO 
1 INTRODUÇÃO ............................................................................................................. 15 
1.1 Motivação ............................................................................................................................. 16 
1.2 Objetivos ...............................................................................................................................16 
1.2.1 Objetivo Geral .................................................................................................................... 16 
1.2.2 Objetivos Específicos ......................................................................................................... 17 
1.3 Organização deste trabalho ................................................................................................... 17 
2 PESQUISA BIBLIOGRÁFICA ....................................................................................... 19 
2.1 Uma breve introdução à Criptografia ................................................................................... 19 
2.2 Criptografia baseada em Atributos ....................................................................................... 23 
2.3 O algoritmo de Criptografia CP-ABE .................................................................................. 24 
2.3.1 Setup .................................................................................................................................. 26 
2.3.2 Encrypt ............................................................................................................................... 26 
2.3.3 KeyGen .............................................................................................................................. 27 
2.3.4 Decrypt ............................................................................................................................... 28 
2.3.5 Delegate ............................................................................................................................. 29 
2.4 Trabalhos Relacionados ........................................................................................................ 29 
2.4.1 Reforço da Privacidade Através do Controle da Pegada Digital........................................ 29 
2.4.2 Um Estudo Sobre Criptografia Baseada Em Atributos ...................................................... 30 
2.4.3 Diferenciação entre os trabalhos relacionados e esta proposta de trabalho ....................... 31 
3 METODOLOGIA ......................................................................................................... 33 
3.1 Tipo de pesquisa ................................................................................................................... 33 
3.2 Do local, coleta e análise dos dados ..................................................................................... 34 
3.3 Das etapas de desenvolvimento do trabalho: ........................................................................ 35 
4 DESENVOLVIMENTO .................................................................................................. 37 
4.1 Análise de Dados referentes a Incidentes de Segurança ....................................................... 37 
4.2 Análise do funcionamento do Algoritmo de Criptografia CP-ABE ..................................... 40 
4.2.1 Funcionamento prático do algoritmo .................................................................................. 40 
4.3 Instalação e utilização do Algoritmo em ambiente Linux via shell ...................................... 42 
4.4 Aplicação CpabeEncriptor .................................................................................................... 45 
4.4.1 Linguagens e Ferramentas Utilizadas ................................................................................. 45 
4.4.1.1 Linguagem Java ............................................................................................................ 46 
4.4.1.1.1 JavaServer Pages ....................................................................................................... 46 
4.4.1.1.2 Servlets ...................................................................................................................... 47 
4.4.1.2 IDE Netbeans ................................................................................................................ 47 
4.4.1.3 MySQL .......................................................................................................................... 47 
4.4.2 Desenvolvimento da Aplicação .......................................................................................... 48 
4.4.2.1 O pacote cpabe.controladores ....................................................................................... 49 
4.4.2.1.1 AtributoServlet e UsuárioServlet ............................................................................... 49 
4.4.2.1.2 UploadDownloadFileServlet / UploadDownloadFileAdvancedServlet / 
UploadDecriptacaoServlet ........................................................................................................... 52 
4.4.2.2 CPABEServlet e CPABEAdvancedServlet .................................................................. 53 
4.4.2.2.1 Classe ExecutarShell ................................................................................................. 54 
4.4.2.2.2 Gerar chave privada (simples) ................................................................................... 56 
4.4.2.2.3 Gerar chave privada (CPABEAdvanced) .................................................................. 57 
4.4.2.2.4 Encriptar .................................................................................................................... 57 
4.4.2.2.5 Encriptar (CPABEAdvanced) .................................................................................... 58 
4.4.2.2.6 Decriptar .................................................................................................................... 60 
4.4.3 Funcionamento da Aplicação ............................................................................................. 60 
5 RESULTADOS ............................................................................................................. 67 
6 CONCLUSÕES ............................................................................................................ 75 
6.1 Trabalhos Futuros ................................................................................................................. 76 
REFERÊNCIAS ................................................................................................................. 77 
 
 
 
15 
 
Capítulo 
 
 
1 Introdução 
 Desde o início dos tempos, a necessidade de se comunicar fez com que o homem 
desenvolvesse métodos eficazes para atingir o seu intento. No entanto, com o passar do tempo 
e a difusão do conhecimento aos demais, notou-se que, não raras as vezes, devido ao caráter 
confidencial de algumas comunicações, estas não poderiam ser acessíveis a todos, e sim a 
alguém ou grupo específico. 
 Com o advento da modernidade e da utilização da computação e da comunicação 
digital em todas as áreas, o assunto segurança das informações torna-se constantemente atual. 
 Desde maio de 2013, Edward Snowden, ex-técnico da CIA, vem surpreendendo o 
mundo ao revelar de forma bastante detalhada como os EUA têm, ao longo dos anos, 
espionado a população americana – utilizando servidores de empresas como Google, Apple e 
Facebook. Como se não bastasse a espionagem interna, Snowden demonstrou através de 
vazamento de arquivos confidenciais que os EUA foram além e, utilizando-se da desculpa de 
táticas anti-terroristas, espionou vários países da Europa e da América Latina, utilizando-se do 
acesso aos mesmos servidores e do aval das empresas de telecomunicações. Dentre os vários 
países espionados, o Brasil teve as suas comunicações violadas, inclusive a própria presidente 
e seus principais assessores foram alvos. 
O jornal britânico The Guardian publicou, a partir de 6 de junho, a primeira de uma 
série de reportagens sobre um esquema de espionagemeletrônica em massa, em que 
a NSA é acusada de operar nos Estados Unidos. […] Segundo os relatórios de 
Snowden, a NSA monitora e coleta informações eletrônicas – de e-mails, 
telefonemas, mensagens de texto e redes sociais –, em cooperação com empresas de 
telecomunicações. O jornal O Globo, em parceria com Greenwald, revelou um 
sistema de espionagem para a América Latina destinado não apenas a questões de 
segurança, mas também comerciais. Segundo os documentos de Snowden, a coleta 
dos metadados é indiscriminada. Eles sugerem que ninguém que use alguma forma 
de meio digital para comunicação está a salvo do monitoramento. (SOUZA; 
GOMIDE, 2013) 
 A partir deste fato concreto apresentado, percebemos o quão é importante impedir o 
acesso não autorizado a informações privadas, ou mesmo garantir que os dados sensíveis ou 
não, estejam seguros em seu local de armazenamento, ou ainda, que, caso um invasor de 
16 
 
sistemas tenha acesso aos arquivos armazenados, que estes não sejam entendidos. Uma 
solução possível para estes problemas é a Criptografia. 
 Criptografia é um método utilizado para proteger informações/dados, quais sejam 
arquivos diversos (documentos, imagens, programas), comunicações diversas (mensagens, e-
mails ou até mesmo transações online), do acesso ou alteração por pessoas indesejadas 
(lembrando-se que, caso consigam acessá-los estes estarão irreconhecíveis). 
 Existem vários modelos de criptografia, cada qual contendo suas vantagens e 
desvantagens, no entanto, este trabalho se propõe a analisar e aplicar o método de criptografia 
assimétrico denominado CP-ABE (Ciphertext-Policy Attribute-Based Encryption – 
Criptografia Baseada em Atributos com políticas no cifro-texto). Neste modelo é necessário 
definir um conjunto de atributos que farão parte do processo de encriptação/decriptação e as 
políticas de acesso estarão definidas no cifro-texto. 
1.1 Motivação 
O trabalho pretende contribuir na divulgação deste método de criptografia – não tão 
usual – através da demonstração de viabilidade de sua utilização, da aplicabilidade em um 
caso concreto e da eficiência do algoritmo, aplicado tanto em um contexto empresarial quanto 
para um contexto particular de armazenamento de arquivos. 
Nota-se ainda que, há pouco material existente em língua portuguesa que aborda o 
tema criptografia baseada em atributos, desta forma, o desafio de contribuir para a literatura 
nacional acerca do tema. 
Outrossim, a crescente demanda por segurança da informação, considerando os fatos 
de espionagem elencados na introdução e a crescente notificação de incidentes relacionados a 
internet (assunto abordado na seção 4.1), principalmente os caracterizados como invasão, o 
que corrobora para a certeza da vulnerabilidade dos sistemas e a constante necessidade de 
evolução das técnicas de armazenamento seguro dos dados (não apenas de disponibilidade, 
mas também de impedimento de acesso/leitura não autorizados). 
1.2 Objetivos 
1.2.1 Objetivo Geral 
Analisar a viabilidade da utilização, a aplicabilidade e a eficiência da criptografia 
baseada em atributos em um contexto de compartilhamento de arquivos. 
17 
 
1.2.2 Objetivos Específicos 
- Demonstrar o conceito de criptografia baseada em atributos; 
- Demonstrar o funcionamento do algoritmo de criptografia baseada em atributos, 
através do desenvolvimento de uma aplicação que fará o uso deste mecanismo criptográfico; 
- Analisar as vantagens e desvantagens da utilização do sistema em um contexto 
empresarial e pessoal; 
- Contribuir na literatura para divulgação deste método criptográfico; 
1.3 Organização deste trabalho 
O trabalho se divide nas seguintes partes: 
1 – Pesquisa Bibliográfica: neste capítulo estarão descritas o conceito geral de 
criptografia, sua finalidade e diferenças de modelos e utilizações. Na sequência é introduzido 
o conceito de Criptografia Baseada em Atributos, suas variações (KP-ABE e CP-ABE) e do 
algoritmo que será utilizado. Por fim é realizada uma avaliação dos trabalhos relacionados 
publicados e sua distinção em relação ao trabalho proposto. 
2 – Metodologia: neste capítulo estarão descritos o tipo de pesquisa adotado e os 
métodos utilizados para se atingir o objetivo proposto. Além disso, são demonstradas as 
etapas de desenvolvimento do trabalho. 
3 – Desenvolvimento: neste capítulo é realizada uma análise dos dados referentes às 
estatísticas de incidentes; análise do funcionamento prático do algoritmo utilizado e é 
apresentada a interface desenvolvida. Por fim é demonstrado como a eficiência da aplicação e 
da interface são avaliadas a partir da implantação da aplicação em servidor do IFSP – Campus 
SBV e teste do comportamento da interface integrada à aplicação. É conveniente ressaltar que 
o tipo de teste realizado no servidor do IFSP foram testes de funcionamento da aplicação e da 
interface. 
4 – Resultados: neste capítulo são apresentados os resultados obtidos a partir da 
utilização do algoritmo de criptografia, sendo elencados os resultados positivos e 
demonstrados os problemas detectados e suas possíveis soluções. 
5 – Conclusões: neste capítulo são listadas as conclusões obtidas referentes à 
eficiência do algoritmo e tamanho do arquivo criptografado. Na sequência são apresentadas 
sugestões de novas abordagens em trabalhos futuros. 
 
 
 
 
19 
 
Capítulo 
 
 
2 Pesquisa Bibliográfica 
 Neste capítulo estão descritos o conceito geral de criptografia, sua finalidade e 
diferenças de modelos e utilizações. Na sequência é introduzido o conceito de Criptografia 
Baseada em Atributos, suas variações (KP-ABE e CP-ABE) e do algoritmo que será utilizado. 
Por fim é realizada uma avaliação dos trabalhos relacionados publicados e sua distinção em 
relação ao trabalho proposto. 
2.1 Uma breve introdução à Criptografia 
 Stallings (2008 p.18) define a criptografia como sendo o processo de converter um 
texto claro (mensagem original legível, inteligível à máquina ou ao homem) em texto cifrado 
(mensagem embaralhada, ilegível, tanto para a máquina quanto para o homem). A figura 1 
demonstra o funcionamento básico de qualquer sistema de criptografia. 
 
Figura 1 – Criptografia 
Fonte: Elaborada pelo autor 
A vantagem do uso desta técnica é atender aos princípios da segurança da informação 
que são: 
a) confidencialidade / privacidade – apenas que é autorizado tem acesso à informação; 
b) autenticidade – garante a autoria do emissor; 
c) integridade – garante a proteção contra alterações indevidas; 
d) não-repúdio / irretratabilidade – garante que o emissor não possa negar a autoria e o 
envio; 
Algoritmo de 
Criptografia 
 
 
Texto 
Plano 
Texto 
cifrado 
20 
e) disponibilidade – garante que a informação esteja disponível ao destinatário, no 
momento em que ele tiver necessidade de acessá-la; 
 De forma resumida, podemos afirmar que a finalidade da Criptografia é proteger 
comunicações diversas (mensagens, e-mails ou até mesmo transações online), do acesso ou 
alteração por pessoas indesejadas (lembrando-se que, caso consigam acessá-los estes estarão 
irreconhecíveis). 
 Dividida em dois grandes grupos, a saber: simétrica e assimétrica, a criptografia 
ocorre através de cifras de fluxo ou cifra de bloco. Stallings (2008, p 41) demonstra que, no 
caso da cifra de fluxo a codificação de um fluxo de dado digital ocorre bit a bit ou byte a byte, 
de cada vez e, no caso de cifra de bloco uma parte (bloco) do texto a ser codificado é tratado 
como um todo e produz como resultado um bloco de texto cifrado com o mesmo tamanho do 
texto claro. 
Outras técnicas envolvidas na criptografia são as técnicas de substituição e a detransposição. A técnica de substituição consiste em substituir uma letra do texto claro é por 
outra letra, número ou símbolo, conforme convencionado. São exemplos: Cifra de César, 
Cifra Playfair, Cifra de Hill, Cifras polialfabéticas, One-Time Pad (chave de único uso). A 
técnica de transposição consiste em executar algum tipo de permutação entre as letras do texto 
claro. Exemplos de uso: Cifra Rail Fence. 
Na criptografia simétrica tanto o emissor quanto o receptor devem conhecer chave 
para encriptar e decriptar a mensagem, ou seja, é a criptografia de chave única. A figura 2 
ilustra o funcionamento da criptografia simétrica. 
 
 
 Figura 2 – Criptografia Simétrica 
Fonte: Elaborada pelo autor 
Texto 
Plano Algoritmo de 
Criptografia 
Texto 
cifrado 
Encriptação Decriptação 
21 
O emissor deve primeiramente comunicar a chave ao receptor (através de um canal 
seguro – que seja o contato pessoal) e, somente após esta comunicação inicial é que 
mensagens poderão ser trocadas entre eles. Como exemplos deste método de criptografia, 
Moreno (2005, p.39) cita: Cifra de César, Cifra Playfair, Cifra de Hill, Cifras polialfabéticas, 
One-Time Pad (chave de único uso), Cifra Rail Fence, DES (Data Encription Standard), triple 
DES, IDEA, Blowfish, RC5, CAST-128, RC2, RC4, AES, MARS, RC6, Serpent, Twofish, 
dentre outros. 
 Moreno (2005, p. 37) demonstra que a necessidade do envio da chave aos usuários 
autorizados causa atraso de tempo e colabora com a insegurança deste método visto que a 
chave pode cair em mão erradas. Outro grande problema refere-se ao número de chaves 
necessárias para se encriptar, sendo o número de chaves calculados em relação proporcional 
ao número de usuários através da seguinte fórmula: n(n - 1)/2 chaves para n usuários. A 
tabela 1 demonstra esta relação proporcional: 
Tabela 1 – Relação Número de usuários X Chaves – Contexto Simétrico 
 
Usuários 
(n) 
Quantidade de Chaves 
[n(n-1)] 
1 0 
2 1 
3 3 
4 6 
5 10 
6 15 
Fonte: Elaborada pelo autor 
Para resolver este problema foi proposta no ano de 1976 por Diffie e Hellman a 
criptografia de chave pública. A figura 3 demonstra o funcionamento da criptografia 
assimétrica ou de chave pública. 
 
22 
 
Figura 3 – Criptografia Assimétrica 
Fonte: Elaborada pelo autor 
Esta nova criptografia propõe que cada usuário (remetente e destinatário) possua um 
par de chaves, sendo uma pública (que será enviada a todos os interlocutores) e uma privada 
(que será mantida em segredo). Desta forma, a mensagem deverá ser codificada pelo 
remetente usando a chave pública do destinatário e este, somente conseguirá decodifica-la 
através da sua chave privada secreta. 
 O número de chaves é calculado utilizando-se a seguinte fórmula: 2n chaves para n 
participantes. Na tabela abaixo é demonstrado um exemplo de quantidades de chaves 
proporcionalmente ao número de usuários: 
 
Tabela 2 – Relação Número de usuários X Chaves – Contexto Assimétrico 
 
Usuários 
(n) 
Quantidade de Chaves 
(2n) 
1 2 
2 4 
3 6 
4 8 
5 10 
6 12 
Fonte: Elaborada pelo autor 
Em que pese este modelo de criptografia proporcionar a utilização de um número bem 
menor de chaves, ele traz como dificuldade a necessidade de um repositório centralizado, que 
Texto 
Plano 
Algoritmo de 
Criptografia 
 
Texto 
cifrado 
Decriptação 
Encriptação 
23 
esteja constantemente disponível, onde as chaves públicas seriam arquivadas e distribuídas. 
Como exemplos deste método de criptografia pode-se citar: RSA, ECC, PGP, GnuPG, dentre 
outros. 
 Por fim, para verificar a autenticação/integridade dos arquivos ou mensagens 
enviadas, Stallings (2008 p. 238) apresenta a função de hash (resumo) que é uma técnica de 
proteção de dados que não utiliza o sistema de chaves apresentados anteriormente e sim um 
tamanho fixo de hash (resumo) independentemente do tamanho da mensagem/arquivo. Desta 
forma o algoritmo de hash mapeia dados grandes e de tamanho variável transformando-os em 
pequenos dados de tamanho fixo. Como exemplos de utilização prática pode-se citar: 
verificação de integridade de arquivos baixados, armazenamento e transmissão de senhas, 
busca de elementos em bases de dados, etc. São exemplos de funções de hash: MD4, MD5, 
SHA-1, SHA-256, SHA-512, Whirlpool, dentre outros. 
2.2 Criptografia baseada em Atributos 
A criptografia baseada em atributos (Attribute-Based Encryption – ABE) derivou-se 
da Criptografia baseada em Identidade (IBE – Identity-Based Encryption) proposta por Adir 
Shamir em 1984. 
Shamir (1985, p.48) afirma que um esquema baseado em identidade se assemelha a 
um sistema de correio vigente, em que o remetente sabe o nome de alguém e endereço para 
poder enviar-lhe mensagens que somente o destinatário pode ler. E, além disso, o destinatário 
pode verificar as assinaturas que somente o remetente poderia ter produzido. 
Estas características fazem com que os aspectos de criptografia da comunicação sejam 
quase transparentes para o usuário, podendo ser utilizada de forma eficaz, mesmo por leigos 
que não sabem nada sobre as chaves ou protocolos. Neste contexto, as identidades do 
remetente e do destinatário seriam utilizadas como chave pública. Esta solução evitaria a 
necessidade de um repositório de chaves públicas e a trocas de chaves. 
Macedo (2013, p. 10) demonstra que para este esquema funcionar o remetente usaria 
uma string, contendo a identidade do destinatário para cifrar o texto claro e, para decifrar, o 
destinatário deveria se identificar a uma autoridade certificadora geradora de chaves privadas 
e esta forneceria neste instante a chave privada para decriptação. Desta forma a chave pública 
permaneceria de domínio público enquanto a chave privada somente seria disponibilizada 
após identificação do destinatário perante uma autoridade. 
Em 2005, Sahai e Waters (2005) propuseram a primeira implementação de uma 
criptografia baseada em atributos que eles chamaram de Fuzzy Identity-Based Encryption 
24 
(Criptografia baseada em identidade difusa). Segundo Sahai e Waters (2005, p. 1) o IBE 
tradicional, até então difundido e implementado, apresentavam as identidades como uma 
string de caracteres, que, no momento da decriptação deveriam ser idênticas. 
A nova proposta era de que a identidade fosse vista como um conjunto de atributos 
descritivos, os quais seriam utilizados para decriptar. No entanto, é definido um nível mínimo 
de semelhança entre estes atributos de forma que a chave utilizada para decifrar não precisa 
ter exatamente os mesmos atributos que foram utilizados para cifrar, sendo apenas necessário 
que a diferença não seja maior do que o nível mínimo definido. 
Considerando que o ABE utilizava como meio de controle para a decriptação apenas a 
semelhança mínima definida e não atendia a uma política de controle de acesso, Goyal et al. 
(2006) propuseram a KP-ABE (Key-Policy Attribute-Based Encryption) e a CP-ABE 
(CiphertextPolicy Attribute-Based Encryption), um modelo que implementa no ABE uma 
política de estrutura de acesso. 
No modelo KP-ABE proposto, cada texto cifrado é rotulado pelo remetente com um 
conjunto de atributos, conforme o ABE, no entanto, cada chave privada é associada uma 
estrutura de acesso que especifica que tipo de texto cifrado a chave pode decriptar. Assim, 
segundo Macedo (2013 p.12) a chave privada somente poderá decodificar a mensagem caso 
os atributos associados à informação satisfizerem a política que está associada à chave. 
Já no modelo CP-ABE proposto por Goyal et al. (2006, p.19), há uma inversão do 
modelo anterior, de forma que o conjunto de atributos está atrelado à chave privada,enquanto 
a informação cifrada é atrelada à política de acesso. 
Visto que não era o foco do artigo publicado, a implementação do CP-ABE foi 
discutida por Bethencourt, Sahai e Waters (2007) onde foi proposto um esquema em que a 
política de acesso está autocontida no dado criptografado, e não na chave privada. A partir 
desta implementação, diversas outras foram propostas, como a descrita por Yu, Xu (2012) 
onde eles consideram portas AND sobre atributos positivos e negativos como a estrutura de 
acesso, e apresenta um novo esquema de algoritmo CP-ABE. 
2.3 O algoritmo de Criptografia CP-ABE 
A primeira construção do algoritmo de criptografia baseada em atributos foi 
desenvolvida por Bethencourt, Sahai e Waters (2007) onde foi proposto um esquema 
criptográfico composto de cinco algoritmos, a saber: “Setup”, “Encrypt”, “KeyGen”, 
“Decrypt” e “Delegate”. 
25 
Visto que não é o foco deste trabalho o delineamento teórico-matemático da 
composição dos algoritmos que fazem parte do esquema CP-ABE, é importante ressaltar 
apenas que este esquema utiliza o conceito de mapas bilineares para a geração da chave 
pública e da chave mestra. 
Já para encriptar a mensagem, este esquema utiliza a estrutura de uma árvore de 
acesso composta nos nós-folha, por atributos e nos demais nós por descrições das políticas de 
acesso a serem atendidas, através de operações lógicas “AND”, “OR”, “k of n”, dentre outras. 
Na figura 4 é apresentado um exemplo de árvore de acesso: 
 
Figura 4 – Exemplo de Árvore de Acesso 
Fonte: Elaborada pelo autor 
O funcionamento da árvore de acesso será demonstrado na seção 4.2.1. 
Nos tópicos a seguir serão listados os algoritmos que compõe o esquema CP-ABE 
utilizado neste trabalho. A análise do funcionamento de cada algoritmo é tratada nos itens 4.2 
e 4.3. O esquema matemático completo pode ser obtido no artigo publicado em Bethencourt, 
Sahai e Waters (2007). 
OR 
AND AND 
Dept1 Estável 
1 OF 
Presidente Gerente Supervisor 
Nível > 3 
26 
2.3.1 Setup 
Este é o primeiro algoritmo a ser invocado quando da utilização do esquema CP-ABE. 
Ele recebe por entrada um parâmetro de segurança (utilizando o conceito de mapas 
bilinerares) e retorna um conjunto de parâmetros (Public Key, PK – chave pública) e uma 
chave-mestra (Master Key – MK). A figura 5 ilustra o funcionamento deste algoritmo: 
 
Figura 5 – Funcionamento do Algoritmo Setup 
Fonte: Elaborada pelo autor 
2.3.2 Encrypt 
Este algoritmo recebe como entrada o conjunto de parâmetros (chave pública (PK)), a 
mensagem a ser cifrada (Message – M), e a estrutura de acesso (política de acesso definida na 
árvore de acesso (T)) e retorna a mensagem cifrada (CipherText – CT). 
Conforme pode ser observado na figura 6, neste momento a politica de acesso passa a 
fazer parte do texto cifrado, ou seja, é o texto cifrado que, no momento da decriptação, 
definirá quem poderá acessar o seu conteúdo. 
27 
 
Figura 6 – Funcionamento do Algoritmo Encrypt 
Fonte: Elaborada pelo autor 
2.3.3 KeyGen 
Este algoritmo recebe como parâmetro de entrada a chave mestra (MK) e um conjunto 
de atributos (S) que serão vinculados ao indivíduo, e retorna a chave privada (Secret Key – 
SK). A figura 7 demonstra o funcionamento do algoritmo KeyGen: 
 
Figura 7 – Funcionamento do Algoritmo KeyGen 
Fonte: Elaborada pelo autor 
28 
2.3.4 Decrypt 
De modo geral, este algoritmo recursivo recebe como entrada conjunto de parâmetros 
(PK), a chave privada (SK) e a mensagem cifrada (CT), retorna a mensagem original (M), 
conforme pode ser visto na figura 8: 
 
Figura 8 – Funcionamento do Algoritmo Decrypt 
Fonte: Elaborada pelo autor 
Na verdade, cada uma destas entradas traz consigo outras informações necessárias 
para o processo de decriptação: a chave pública (PK) traz todos os parâmetros públicos que 
poderiam ser usados para a encriptação. Já o CT (texto cifrado) traz em seu bojo a política de 
acesso A (árvore de acesso (T)) e, por fim, a chave privada SK traz a informação do conjunto 
S de atributos que o receptor possui. 
Desta forma, se o conjunto de atributos S, constante da chave privada, satisfaz a 
estrutura de acesso A contida do cifrotexto, o algoritmo irá decriptar o texto cifrado e retornar 
uma mensagem M. 
Para que isto ocorra o algoritmo primeiramente precisa definir se o atributo da chave 
privada satisfaz a política de acesso. Isto é realizado através da função DecryptNode, que 
recebe como parâmetros o CT, a SK e um nó x da árvore de acesso (T). Se o nó x for folha (no 
caso de haver apenas um atributo) utiliza-se uma versão da função mais sintética. Se não, 
utiliza-se uma versão da função mais extensa, que analisará nó a nó. Ambas produzem o 
mesmo resultado final 
 Definido qual versão do DecriptNode será utilizado, esta função recursiva de 
verificação de atendimento à política de acesso é chamada no nó raiz (R) da arvore de acesso 
(T) e, se a árvore é satisfeita pelo conjunto S de atributos da SK, a mensagem pode ser 
decriptada utilizando-se a função Decrypt, que retorna, por fim, o texto decriptado. 
29 
2.3.5 Delegate 
Este algoritmo recebe por entrada uma chave privada (SK) e um conjunto de atributos 
(Ŝ) que está contido no conjunto de atributos da chave privada (S), e retorna uma nova chave 
privada para o conjunto de atributos fornecido. A figura 9 demonstra o funcionamento deste 
algoritmo: 
 
Figura 9 – Funcionamento do Algoritmo Delegate 
Fonte: Elaborada pelo autor 
Esta nova chave privada equivale a uma chave privada recebida diretamente pela 
autoridade quando da utilização do algoritmo KeyGen. 
2.4 Trabalhos Relacionados 
Nas seções subsequentes serão apresentados trabalhos correlatos que ajudam a 
contextualizar o presente trabalho junto à bibliografia, bem como serão realizadas avaliações 
destes e sua distinção em relação ao trabalho proposto. 
2.4.1 Reforço da Privacidade Através do Controle da Pegada Digital 
 Macedo (2013) propôs em sua dissertação de mestrado a utilização do sistema 
criptográfico baseado em Identidade (IBE) como forma de garantir que os acessos a 
determinadas informações fossem garantidas apenas a quem atendesse às políticas de acesso. 
 Em sua análise, Macedo demonstra que as implementações, IBE ou ABE, atendem ao 
requisito de ligar as políticas de acesso ao arquivo criptografado. No entanto, a opção pela 
utilização do sistema IBE, em detrimento ao ABE, justifica-se pelo fato de que o sistema IBE 
é mais flexível, permitindo a criação de novos papeis/perfis que pudessem 
codificar/decodificar os arquivos. Por outro lado, o sistema ABE é mais rígido e o universo de 
atributos e regras de acesso têm que ser definidas no início, não se permitindo alterações e 
inserções de novos papéis. 
30 
 Outra desvantagem, segundo Macedo, refere-se a utilização das chaves públicas e 
privadas. Enquanto no ABE há apenas uma chave pública e, a chave privada é gerada para 
cada utilizador, baseada em seus atributos, no esquema IBE cria-se uma chave privada para 
cada chave pública utilizada para criptografar. Desta forma, se houver comprometimento da 
chave privada no esquema ABE, todos os arquivos que forem cifrados e que esta chave 
atender aos requisitos de acesso, serão decriptografados. Já no esquema IBE, apenas o arquivo 
que foi criptografado com determinada chave pública poderá ser decifrado pelo seu par de 
chave privada. 
 Como desenvolvimento, Macedo realizou o seu trabalho criando uma aplicação web, 
gestora de arquivos, que utiliza o esquema IBE para criptografar arquivos. As políticas de 
controle de acessos são geridas pela linguagem de políticas XACML (eXtensible Access 
Control Markup Language) a qual permite especificarpolíticas de controle de acessos em 
XML. No projeto foi utilizado um controle de acessos baseado em papéis, o qual pode ser 
alterado utilizando a mesma linguagem de políticas. Considerando que o esquema IBE utiliza 
como identidade uma string, é gerado um “hash” da política de controle de acesso para ser 
usada como chave de cifragem – neste ponto, o “hash” da política é utilizada como a 
identidade do destinatário. Foi criado ainda um mecanismo de auditoria para monitorar a ação 
dos utilizadores do sistema e simular ataques. 
 Da análise da utilização e desempenho do sistema, Macedo comprovou que, a 
auditoria proposta funciona corretamente emitindo avisos ao usuário quando existe alguma 
tentativa de burlar o sistema. No quesito análise dos tempos de execução dos algoritmos do 
esquema IBE, Macedo demonstra que estes são reduzidos e constantes, e podem ser 
desprezáveis. No entanto, o autor afirma que a maior influência negativa no tempo de resposta 
do sistema refere-se aos tempos de execução dos algoritmos criptográficos simétricos 
utilizados para cifrar e decifrar a informação. O aumento do tempo é diretamente proporcional 
ao aumento do tamanho dos arquivos, porém, são ainda tempos razoáveis e que não 
interferem no funcionamento do sistema. 
2.4.2 Um Estudo Sobre Criptografia Baseada Em Atributos 
Machado (2013) propôs em seu trabalho de conclusão de curso uma análise da 
criptografia baseada em atributos e seus principais esquemas, e ao final realizou uma 
comparação dos resultados obtidos a partir da implementação destes esquemas utilizando o 
framework CHARM. Machado baseou a sua análise nos critérios de: confidencialidade da 
informação, alta granularidade (nível de detalhamento) de controle de acesso, resistência a 
31 
ataques de combinação e escalabilidade (capacidade de um sistema responder de forma 
uniforme ao constante crescimento de carga). 
Desta análise restou comprovado que dos três esquemas analisados, a saber: ABE, KP-
ABE e CP-ABE, todos atendem aos critérios de confidencialidade e resistência a ataques. Já 
no critério de alta granularidade de controle, o esquema ABE não comporta e no critério de 
escalabilidade nenhum dos três esquemas se comporta de forma satisfatória. 
No quesito de desempenho dos algoritmos, Machado concluiu que o esquema ABE 
encontra-se muito aquém dos seus sucessores no que tange a geração de chaves e a 
encriptação, sendo que o algoritmo de decriptação atende de forma satisfatória. Para o autor, o 
esquema que demonstrou melhor desempenho em todos os quesitos foi o KP-ABE, mesmo 
que este desempenho tenha sido mínimo em referência ao CP-ABE. 
2.4.3 Diferenciação entre os trabalhos relacionados e esta proposta de trabalho 
O trabalho proposto difere-se dos trabalhos relacionados no sentido de que, 
diferentemente de Macedo (2013) utilizaremos a criptografia baseada em atributos (CP-ABE) 
como mecanismo criptográfico. O que Macedo considera como aspecto negativo, neste 
trabalho é visto como positivo sob a seguinte ótica: 
- A necessidade de se conhecer todos os atributos possíveis, em um contexto 
empresarial, garante ao gestor ter o total controle sobre como os arquivos serão cifrados, e 
mais ainda, sobre quem possui autoridade sobre estes. Desta forma, a rigidez de não se 
permitir criar novos papéis obriga ao utilizador profissional um planejamento prévio e 
estritamente ligado às políticas de segurança de uma empresa. 
- A geração de uma chave pública para cada chave privada obrigaria a possuir um 
enorme sistema de gestão e armazenamento de chaves, o que, com frequência não é viável a 
muitas empresas, e muito menos ao usuário comum. 
 Quanto ao trabalho proposto por Machado (2013), este trabalho se difere pela proposta 
de apresentar uma aplicação prática que torne acessível a utilização do esquema criptográfico 
por particulares e por empresas, não se restringido a análise comparativa dos esquemas 
criptográficos. 
 A utilização do sistema criptográfico vislumbra-se possível sob os seguintes aspectos: 
- Por particulares: o usuário utilizará o sistema em seu computador pessoal, garantindo 
com isso que somente ele terá controle das políticas de acesso e adotará mecanismos pessoais 
para salvaguarda das chaves geradas pelo sistema. Visto que a proposta do sistema não é a 
32 
encriptação de arquivos para envio a terceiros, o usuário, para este fim, já possui outras 
técnicas disponíveis. 
- Por empresas: para uma utilização eficiente, a empresa deverá centralizar em seu 
departamento de TI, a gestão da aplicação, das políticas de acesso e das chaves geradas pelo 
sistema. O armazenamento e salvaguarda dos arquivos e chaves deverão estar alinhados às 
políticas de segurança da empresa e outros mecanismos de controles devem ser incorporados. 
 
 
 
 
33 
Capítulo 
 
 
3 Metodologia 
Neste capítulo será apresentada a metodologia utilizada no trabalho. Nele será 
definido o tipo de pesquisa, bem como de onde os dados foram obtidos, coletados e 
analisados. Por fim, serão demonstradas as etapas de desenvolvimento que foram seguidas. 
3.1 Tipo de pesquisa 
 O trabalho se desenvolveu adotando-se a metodologia de pesquisa de natureza 
aplicada (PRODANOV; FREITAS p.50), pois propõe uma aplicação prática do tema 
discutido buscando solucionar o problema específico da salvaguarda das informações contidas 
em arquivos diversos permitindo o seu compartilhamento seguro. 
Para tanto, o problema é abordado de forma quantitativa e qualitativa, visando 
demonstrar através das estatísticas oriundas do CERT.br (Centro de Estudos, Resposta e 
Tratamento de Incidentes de Segurança do Brasil) a relevância e atualidade do tema abordado, 
bem como a análise dos resultados obtidos após implementação da interface proposta, 
permitindo descrições, comparações e novas interpretações. 
Para atender o objetivo proposto, e baseado na classificação vigente referente aos seus 
objetivos gerais, o trabalho apresenta um pouco de cada um dos tipos de pesquisas elencados, 
a saber: pesquisas de natureza exploratória, descritiva e a explicativa. Já como complemento, 
será adotado como tipo de delineamento o estudo de caso – para este fim, a interface 
desenvolvida foi implantada em máquina virtual disponibilizada nos servidores do IFSP – 
Campus São João da Boa Vista e permitindo o acesso e utilização da implementação proposta, 
de forma a propiciar o parecer sobre o funcionamento e a viabilidade da utilização da 
aplicação. 
Por meio da pesquisa exploratória foi desenvolvida a pesquisa bibliográfica e 
coletados/analisados os dados estatísticos oriundos do CERT.br, bem como propiciou a 
definição do estudo de caso executado. 
 Através da pesquisa descritiva procurou-se demonstrar o estudo, a análise, o registro e 
a interpretação da teoria/implementação da criptografia baseada em atributos. O objetivo foi 
demonstrar como se estrutura e funciona este método de criptografia. 
34 
 
 
 Por outro lado, a pesquisa de natureza explicativa se materializa – a partir do uso de 
métodos experimentais – através do desenvolvimento de uma aplicação que teve por 
finalidade demonstrar o funcionamento do algoritmo escolhido, apresentar o seu resultado 
(arquivo criptografado), bem como propiciar o aparecimento dos dados estatísticos a serem 
coletados. Através da experiência prática foi possível registrar os fatos, analisá-los, interpretá-
los e identificar as suas causas. 
O estudo de caso, realizado através da disponibilidade da aplicação desenvolvida em 
servidor do Campus, veio como reforço ao estudo acima proposto e demonstrou, após coleta 
de dados e uma análise dos resultados, os efeitos resultantes (positivos e negativos) em um 
contextoempresarial (quando se discute a ideia de setorizar os atributos e acesso em rede) ou 
particular (quando o usuário por si só pode gerenciar os atributos e a política de acesso). 
3.2 Do local, coleta e análise dos dados 
 Preliminarmente, a coleta de dados se deu em ambiente virtual a partir da análise das 
estatísticas disponíveis no site do CERT.br. A finalidade desta análise é demonstrar, pelos 
crescentes números de incidentes, que os usuários de computadores estão vulneráveis e são 
vítimas em potencial, levando esta análise a definir a pertinência do trabalho proposto. 
Considerando a amplitude das informações disponíveis sobre incidentes ligados a 
segurança da informação, a amostra específica foi restrita aos tipos de ataques catalogados 
como “invasão”. 
 Posteriormente ao desenvolvimento da aplicação, foi desenvolvido um estudo de caso 
da utilização prática da criptografia baseada em atributos simulando um ambiente empresarial 
(em rede) e de forma particular. A proposta seria ampliada de forma a permitir que outros 
usuários que testassem a aplicação respondessem a um questionário que abordaria os quesitos 
de usabilidade (aprendizagem fácil, eficiência de utilização, facilidade de memorização, 
robustez ao erro, satisfação pessoal) e utilidade (analisando-se se a aplicação cumpre o seu 
objetivo e se é útil para aplicação cotidiana). 
35 
 
 
 
Figura 10 – Usabilidade e Utilidade 
Fonte: Elaborada pelo autor 
A técnica para obtenção destes dados seria a realização de teste de uso prático da 
aplicação. A intenção é a apresentação deste modelo de criptografia como alternativa salutar 
ao problema apresentado na análise anterior. 
Os dados obtidos em ambas as coletas foram analisados tanto de forma quantitativa 
quanto qualitativa, apresentado numericamente. 
3.3 Das etapas de desenvolvimento do trabalho: 
 Com a finalidade de atingir o objetivo proposto, a execução do trabalho foi dividida 
nas seguintes etapas a saber: 
 
1ª Etapa – Elaboração da Pesquisa Bibliográfica na qual é discutido o conceito geral 
de criptografia, suas diferenças e aplicações. Na sequência é introduzido o conceito de 
criptografia baseada em atributos. Os resultados desta etapa encontram-se descritos nas seções 
2.1 e 2.2; 
Satisfação 
Pessoal 
Aprendizagem 
Fácil 
Robustez ao 
Erro 
Eficiência de 
Utilização 
Facilidade de 
Memorização 
USABILIDADE 
UTILIDADE 
Cumprimento do 
Objetivo 
Pratica 
Cotidiana 
Figura 11 – Etapas de Desenvolvimento 
Fonte: Elaborada pelo autor 
 
36 
 
 
2ª Etapa – Estudo dos algoritmos de criptografia baseados em atributos e 
estabelecimento de diferenciação entre o KP-ABE (Key-Policy Attribute-Based Encryption) e 
a CP-ABE (CiphertextPolicy Attribute-Based Encryption). Os resultados desta etapa 
encontram-se descritos nas seções 2.2, 2.3, 4.2 e 4.3; 
3ª Etapa – Análise das estatísticas disponíveis no CERT.br e CAIS. Os resultados 
desta etapa encontram-se descritos na seção 4.1; 
4ª Etapa – Implementação de aplicação web que faz a interface entre o algoritmo e o 
usuário, permitindo a criptografia do arquivo; 
5ª Etapa – Implantação, testes de utilização da aplicação e análise dos dados obtidos. 
 
 
 
 
37 
 
 
Capítulo 
 
 
4 Desenvolvimento 
 Este capítulo se propõe a apresentar o desenvolvimento do trabalho a partir do 
proposto no item 3.3. Nele são apresentadas análises estatísticas de incidentes de segurança, 
análise do funcionamento teórico e prático do algorítmo e a aplicação desenvolvida. 
4.1 Análise de Dados referentes a Incidentes de Segurança 
O CERT.br, Centro de Estudos, Resposta e Tratamento de Incidentes de Segurança no 
Brasil, é a autoridade brasileira, vinculada ao Comitê Gestor da Internet no Brasil (CGI.br), 
que monitora os incidentes de segurança em computadores que envolvam redes conectadas à 
Internet brasileira. 
A partir das informações obtidas através das notificações repassadas de forma 
voluntária por usuários da internet, o CERT.br atua nas seguintes linhas de ação: 
a) tratamento a incidentes de segurança; 
b) conscientização sobre os problemas de segurança; 
c) análise de tendências dos incidentes e ataques; 
d) correlação entre os eventos ocorridos. 
 Incidente é definido pelo CERT.br como qualquer evento adverso, já confirmado ou 
sob suspeição, relacionado diretamente à segurança de sistemas de computação ou de redes de 
computadores. Os principais tipos de incidentes elencados nas estatísticas do CERT.br são: 
varreduras (scans), tentativas e invasão propriamente dita, ataques de negação de serviço 
(DoS – Denial of Service), ataques de engenharia social, comprometimento de servidores 
Web e desfiguração de páginas, fraudes que visam ludibriar o usuário e muitas vezes obter 
vantagem indevida (inclusive financeira como o caso dos Scams), dentre outros. 
 Ao longo de 15 anos de monitoramento, o CERT.br já registrou mais de 2.544.982 
incidentes, distribuídos, ao longo dos anos conforme gráfico abaixo: 
 
38 
 
 
 
 
Figura 12 – Total de Incidentes Reportados ao CERT.br por Ano 
Fonte: http://www.cert.br/stats/incidentes/ 
 
 Deste total de incidentes, os relacionados à invasão são os que diretamente se 
relacionam ao objeto deste trabalho. Desta forma, com o intuito de individualizá-los, os dados 
referentes a este tipo de incidente foram extraídos do montante total e elencados conforme 
gráfico abaixo: 
 
Figura 13 – Incidentes categorizados como Invasão, reportados ao CERT.br 
Fonte: http://www.cert.br/stats/incidentes/ 
 
Nota-se que dos mais de 2.544.982 incidentes contabilizados, 21.790 referem-se 
diretamente a invasões, representando menos de 1% dos incidentes. No entanto, observa-se 
que, até o ano de 2010, poucos incidentes eram reportados ao CERT.br, o que permite o 
questionamento dos dados descritos. 
39 
 
 
 
Outrossim, analisando apenas o período que compreende 2011 a 2013, em que houve 
um aumento significativo dos dados reportados, nota-se um grave aumento do número de 
invasões, saltando do pequeno número de 106 em 2011 ao pico de 11.207 em 2013. 
Outra fonte de estatísticas referentes a incidentes de segurança é o CAIS – Centro de 
Atendimento a Incidentes de Segurança. Este centro, vinculado a Rede Nacional de Ensino e 
Pesquisa, desde 1997 atua detectando, resolvendo e prevenindo incidentes de segurança na 
rede acadêmica brasileira. Outras funções exercidas são elaborar, promover e disseminar 
práticas de segurança em redes. 
A figura 9 apresenta o total de incidentes reportados ao CAIS por ano e atualizado em 
09.05.2014. 
 
Figura 14 – Total de Incidentes Reportados ao CAIS por Ano 
Fonte: http://www.rnp.br/cais/estatisticas/index.php 
 
Neste gráfico pode-se perceber uma variação do número de incidentes reportados. 
Enquanto ao CERT.br os maiores números de incidentes foram reportados a partir de 2006, 
tendo o seu ápice em 2012, ao CAIS os maiores números de informações foram repassadas 
entre os anos 2002 e 2005. 
40 
 
 
 
Conforme relatório de análise de incidentes disponível no sitio do CAIS
1
, desde a sua 
fundação recebeu notificação de mais de 1.206.881 incidentes. Destes, no ano de 2012 foram 
registrados 10.098 incidentes caracterizados como intrusão e contra 8.404 em 2013, além das 
140 tentativas de intrusão em 2012 contra as 352 tentativas em 2013. 
Esta informação reforça a ideia de que a todo instante o usuário de computador 
conectado à internet é vítima em potencial, ou de fato, de incidentes relacionados à segurança, 
sendo que destes podem advir resultados negativos como o acesso indevido a informações que 
não estejamprotegidas. 
Neste contexto a criptografia pode ser utilizada como uma aliada a proteção dos dados 
armazenados. 
4.2 Análise do funcionamento do Algoritmo de Criptografia CP-ABE 
Este algoritmo de criptografia baseada em atributos com políticas de acesso no 
Cifrotexto, proposto por Goyal at. Al (2006) e implementado por Bethencourt, Sahai e Waters 
(2007) é importante por trazer esquema de chave pública que permite a melhora de gestão das 
chaves. 
Enquanto nos modelos anteriores, baseados em chave pública, era necessário um par 
de chaves para cada usuário, neste novo modelo, apenas uma chave pública é gerada, baseada 
no conjunto de parâmetros (privilégios/atributos) existentes. Esta única chave permite a 
criptografia, enquanto as diversas chaves privadas permitirão a decodificação, se satisfeitas a 
política de acesso definida no texto cifrado. 
O mais importante é que, neste modelo de criptografia, o texto plano não é 
criptografado mais por usuário, conforme modelos anteriores, e sim por privilégios. 
4.2.1 Funcionamento prático do algoritmo 
Para utilizar o algoritmo é definida uma lista de usuários (Ex: U = {u1, u2, ...., un}) e 
uma lista de atributos possíveis (Ex: A = {a1, a2, ...., an}). Neste momento, cada usuário 
deverá ser relacionado diretamente com um ou mais atributos. Ex: R= {u1(a1,a2); u2(a1); 
A Figura 15 ilustra este relacionamento. 
 
1
 http://www.rnp.br/_arquivo/cais/relatorio_incidentes_2013.pdf 
41 
 
 
 
 
Figura 15 – Relacionamento Usuários X Atributos 
Fonte: Elaborada pelo autor 
 Definidos os relacionamentos, é necessário montar uma árvore de acesso na qual os 
nós folha são atributos existentes no conjunto dos atributos definidos anteriormente e os 
demais nós são portas com Threshold atribuído (ou seja com limite de tolerância ou níveis 
máximos permitidos). 
 A figura 16 apresenta um exemplo de estrutura de acesso em formato de árvore: 
 
 
Figura 16 – Árvore de Acesso 
Fonte: Elaborada pelo autor 
 Neste exemplo acima, a partir do nó raiz, para se atender a política de acesso há duas 
opções iniciais aceitáveis: OU atende a politica direcionando-se ao nó “AND”, OU atende a 
política direcionando-se ao nó “1 OF”. 
Usuários 
Atributos 
Relacionamento 
 
 
OR 
AND 1 OF 
42 
 
 
 
 Para atender ao nó “AND” o usuário deverá possuir em sua chave privada os dois 
atributos “raio” e “sol”. Não atendendo este Threshold, verifica se atende o outro Threshold 
“1 OF”, ou seja, o usuário deverá ter em sua chave privada um dos atributos estrela (4, 5 ou 6 
pontas). Se atendido algum dos Threshold o arquivo criptografado permitirá que o usuário o 
decodifique. 
4.3 Instalação e utilização do Algoritmo em ambiente Linux via shell 
Bethencourt, Sahai e Waters (2007) disponibilizaram no site da Johns Hopkins 
University, um “cpabe toolkit”2 no qual há a implementação do algoritmo desenvolvido, bem 
como um tutorial para instalação deste
3
. O kit possui o código dividido em dois pacotes: 
libbswabe (uma biblioteca que implementa as operações do núcleo da criptografia) e cpabe 
(contém as funções em alto-nível e de interface com o usuário). O autor alerta sobre a 
necessidade de instalação preliminar do conjunto de bibliotecas PBC – Pairing-based 
cryptography (criptografia baseada em emparelhamento). 
Após a instalação realizada conforme tutorial disponível, basta acessar via shell o 
diretório onde foi instalado o esquema CP-ABE, e digitar o comando inicial chamando a 
função o cpabe-setup. Com este comando é gerada a chave mestra e a chave pública, através 
do algoritmo Setup descrito na seção 2.3.1. Nota-se que a chamada desta função ocorre sem a 
necessidade de se passar nenhum parâmetro, pois a aplicação já possui valores default para a 
geração das chaves, entretanto, podem ser utilizados parâmetros adicionais. A verificação do 
que foi gerado pode ser acessada através do comando ls, que listará os arquivos existentes na 
pasta. 
 
Figura 17 – Shell comando cpabe-setup 
Fonte: http://hms.isi.jhu.edu/acsc/cpabe/tutorial.html 
 
2
 Disponível em http://hms.isi.jhu.edu/acsc/cpabe/ 
3
 Disponível em http://hms.isi.jhu.edu/acsc/cpabe/tutorial.html 
43 
 
 
 
 O passo seguinte é gerar a chave privada para os usuários previamente definidos. Para 
isso basta chamar a função cpabe-keygen, descrita na seção 2.3.3 e passar como parâmetro a 
chave pública, chave máster, além de definir o nome da chave privada. Neste momento devem 
ser definidos os atributos que serão relacionados ao usuário. 
 
Figura 18 – Shell comando cpabe-keygen 
Fonte: http://hms.isi.jhu.edu/acsc/cpabe/tutorial.html 
 No exemplo acima, são criadas duas chaves privadas referentes aos usuários Sara e 
Kevin, respectivamente. Ambos recebem como parâmetros a mesma chave pública e chave 
mestra, no entanto os atributos são distintos. Nota-se que Sara possui os seguintes atributos: 
“sysadmin”, “it_department”, “'office = 1431'” e “'hire_date = '`date +%s`” e Kevin possui os 
seguintes atributos: “business_staff”, “strategy_team”, “'executive_level = 7'”, “'office = 
2362'” e “'hire_date = '`date +%s`”. Ao se executar o comando ls, verifica-se que as chaves 
privadas foram criadas. 
Como é possível verificar no exemplo acima, a estrutura de acesso aceita como 
parâmetros, além dos citados AND, OR e X OF K, datas e expressões contendo os símbolos = 
(igual), > (maior que) e < (menor que) e suas combinações possíveis (<=, >=, etc). 
 O próximo passo é a encriptação propriamente dita. Basta chamar a função cpabe-enc, 
descrito na seção 2.3.2, e passar os parâmetros que são a chave pública e o arquivo a ser 
criptografado. Deve-se também definir neste momento a política de acesso, ou seja, definir 
quais atributos deverão ser atendidos para que o arquivo possa ser decriptografado 
posteriormente. 
44 
 
 
 
 
Figura 19 – Shell comando cpabe-enc 
Fonte: http://hms.isi.jhu.edu/acsc/cpabe/tutorial.html 
 No exemplo acima, o arquivo a ser criptografado é o security_report.pdf que encontra-
se no mesmo diretório da chave pública. Ao executar o algoritmo, além dos parâmetros chave 
pública e arquivo é fornecida a seguinte política de acesso: 
Para decodificar o arquivo o usuário deverá possuir os seguintes atributos: 
Opção 1: “sysadmin” e ao mesmo tempo “hire_date < 946702800” ou “security_team” 
Opção 2: “business_staff” e ao mesmo tempo 2 dos atributos a seguir (“executive_level >= 
5”, “audit_group”, “strategy_team”). 
 A política de acesso, descrita acima, pode ser representada através da seguinte árvore: 
 
Figura 20 – Política de Acesso 
Fonte: Elaborada pelo autor 
 Ao ser criptografado, o arquivo recebe a extensão .cpabe, após a extensão original do 
arquivo. 
Por fim, no passo da decodificação, deve-se chamar a função cpabe-dec, descrita na 
seção 2.3.4, passar os parâmetros necessários (chave pública, chave privada e arquivo 
OR 
AND AND 
OR 
2 OF 
 hire_date < 946702800 security_team 
executive_level >= 5 
sysadmin 
audit_group estrategy_team 
business_staff 
45 
 
 
 
codificado). O algoritmo analisará se a chave privada atende a política descrita no interior do 
arquivo criptografado e, caso afirmativo, o arquivo será decodificado. 
 
Figura 21 – Shell comando cpabe-dec 
Fonte: http://hms.isi.jhu.edu/acsc/cpabe/tutorial.html 
 Nota-se que no exemplo acima a kevin_priv_key atende aos requisitos da política, pois 
Kevin possui os seguintes atributos: “business_staff”, “strategy_team”, “'executive_level = 
7'”, “'office = 2362'” e “'hire_date = '`date +%s`”. Ou seja, atentea opção 2 da política de 
acesso, a saber: “business_staff”, “strategy_team”, “'executive_level >= 5'”. 
4.4 Aplicação CpabeEncriptor 
 Conforme foi demonstrado, a utilização do algoritmo, no modo como está disponível 
pelo kit analisado é de alta complexidade para um usuário comum efetuar a 
encriptação/decriptação, visto que, com frequência, não há uma familiaridade com o 
interpretador de comandos. 
Considerando que este trabalho tem como objetivo principal analisar a utilização da 
CP-ABE como recurso de segurança em um contexto real, optou-se pelo desenvolvimento de 
uma interface mais intuitiva para realizar o estudo de caso. 
Neste contexto, foi desenvolvida uma interface em Java Web que permite ao usuário 
interagir de forma autoexplicativa com o algoritmo e proceda encriptação/decriptação de seus 
arquivos de forma natural e utilizando-se dos conceitos do CP-ABE. 
 A aplicação foi desenvolvida no Sistema Operacional Linux, em linguagem Java, 
utilizando-se a IDE Netbeans e como SGBD padrão o MySQL. 
4.4.1 Linguagens e Ferramentas Utilizadas 
Nas seções subsequentes serão apresentadas as linguagens e ferramentas utilizadas 
para o desenvolvimento da aplicação Java Web que faz a interface entre o usuário e o sistema 
de criptografia CPABE. 
46 
 
 
 
4.4.1.1 Linguagem Java 
 Java é uma linguagem de programação, criada pela Sun Microsystems, no paradigma 
orientado a objetos. Por ser executada sobre uma JVM – Java Virtual Machine (Máquina 
Virtual Java) permite a qualquer plataforma de hardware ou equipamento eletrônico que 
possua por funcionalidade a execução de uma JVM, consiga executar o código Java. Devido a 
esta portabilidade, o slogan da Linguagem Java é “write once, run anywhere”, traduzindo, 
“escreva uma vez, rode em qualquer lugar”. 
 Por ser bastante robusta, esta linguagem permite o desenvolvimento de variados tipos 
de aplicações, dentre elas Sistemas Operacionais, Aplicações Desktops, Aplicações 
Empresariais, Aplicações Webs, etc. 
Neste trabalho, considerando que o esquema criptográfico desenvolvido por 
Bethencourt foi escrito em C e, no decorrer do desenvolvimento foi observado que, para este 
método criptográfico funcionar, é necessária a utilização de diversas bibliotecas específicas, 
optou-se por utilizar a classe java “ProcessBuilder” que serve para executar um comando do 
sistema. O “ProcessBuilder” retorna um Process que representa o processo rodando esse 
comando e permite acessar a entrada e saída padrão desse processo. 
 No caso específico, a motivação é o reuso da implementação e sua disponibilização 
em aplicação Java, focando-se os esforços no desenvolvimento da interface e testes 
posteriores. A implementação em C do esquema de criptografia CP-ABE a ser utilizada 
encontra-se disponível em http://hms.isi.jhu.edu/acsc/cpabe/cpabe-0.11.tar.gz. 
4.4.1.1.1 JavaServer Pages 
JavaServer Pages (JSP) é uma tecnologia lançada em 1999 pela Sun Microsystems 
que permite aos desenvolvedores de software usar o HTML de forma direta, e que possibilita 
a utilização do Java para criarem páginas web geradas dinamicamente. Esta tecnologia 
propicia a produção de aplicações que acessem o banco de dados, efetuem a manipulação de 
arquivos no formato texto, capturem informações a partir de formulários e interajam com os 
servlets. O caráter dinâmico da página JSP é conferido por elementos próprios que podem 
tanto realizar um processamento, quanto podem recuperar o resultado do processamento 
realizado em um Servlet, por exemplo. Após a interação, o conteúdo dinâmico obtido é 
exibido junto à página JSP. 
 
47 
 
 
 
4.4.1.1.2 Servlets 
Servlets são classes Java que implementam a API Java Servlet através da importação 
do pacote javax.servlet. Esta API, através da disponibilização de uma interface, proporciona a 
adição de conteúdo dinâmico em um servidor web usando a plataforma Java e geram 
conteúdo dinâmico (normalmente HTML) e, utilizando o modelo request-response 
(requisição-resposta) efetuam a interação com os clientes Web, como por exemplo, os 
Browsers. Ao receber uma requisição, um Servlet efetua a captura dos parâmetros desta 
requisição (no nosso caso postado via formulário), efetuam qualquer processamento inerente a 
uma classe Java, e devolvem uma página HTML. 
Para execução, um Servlet deve ser implantadas, instaladas e configuradas em um 
Servidor que implemente um Servlet Container (no caso desta aplicação, Apache Tomcat). 
4.4.1.2 IDE Netbeans 
 IDE – Integrated Development Environment (Ambiente Integrado de 
Desenvolvimento) é uma ferramenta que visa apoiar no desenvolvimento de softwares 
garantindo maior produtividade e agilizando o processo de criação. O IDE permite escrever, 
compilar, “debugar” e instalar aplicações. 
 Para o desenvolvimento da aplicação proposta foi utilizado o Netbeans, que é a 
ferramenta de desenvolvimento Java oficial da Sun, open source, e que possui um grande 
número de funcionalidades (plugins, bibliotecas, frameworks, etc) que auxiliarão no 
desenvolvimento da aplicação. 
4.4.1.3 MySQL 
 MySQL é um SGBD – Sistema de Gerenciamento de Banco de Dados da Oracle, que 
utiliza a linguagem SQL - Structured Query Language (Linguagem de Consulta Estruturada). 
Sua utilização será restrita na criação de um banco de dados para armazenamento dos usuários 
e atributos utilizados pela aplicação. 
Na aplicação desenvolvida, o MySQL é utilizado para armazenamento dos atributos e 
dos usuários. 
48 
 
 
 
4.4.2 Desenvolvimento da Aplicação 
Definidas as linguagens e ferramentas, a aplicação foi desenvolvida a partir da criação 
de um projeto Java Web, que doravante denominaremos CpabeEncriptor
4
, que possui em seu 
interior a seguinte estrutura, conforme visto na figura 22: 
 
Figura 22 – Estrutura do Projeto CpabeEncriptor 
Fonte: Elaborada pelo autor 
 
Na figura acima, é possível notar que o projeto é composto de páginas web, escritas 
em JavaServer Pages - JSP, que permitem uma interação com os objetos retornados do banco 
 
4
 Aplicação desenvolvida está disponível em https://github.com/bv1210122/cpabeEncriptor 
49 
 
 
 
de dados e por pacotes de códigos-fonte onde estão inseridos as classes de conexão e 
interação com o SGBD, bem como os controladores Servlets que fazem a comunicação com o 
Shell, emitindo os comandos necessários que permitirão a execução do sistema de criptografia 
instalado e pelas bibliotecas java que farão a conexão com o banco e o upload/download dos 
arquivos para o servidor. 
4.4.2.1 O pacote cpabe.controladores 
O cerne da aplicação reside no pacote cpabe.controladores. Nele estão contidos os 
servlets que, transparente ao conhecimento do usuário, captam as informações advindas da 
interface Java Web escrita em JSP, rodando no navegador e interagem, quando necessário 
com o banco de dados e com o sistema de criptografia e retorna as informações a outra página 
JSP, ou gerando uma nova página. 
4.4.2.1.1 AtributoServlet e UsuárioServlet 
As funções de inserção, deleção, atualização e listagem de atributos e usuários são 
gerenciadas respectivamente pelos servles AtributoServlet e UsuarioServlet, através da 
chamada de funções das classes DAO – Data Access Object, constantes do pacote 
cpabe.DAO. 
O padrão DAO é um padrão de projeto que abstrai e encapsula os mecanismos de 
acesso a dados. Ele omite os detalhes da execução da origem dos dados. Na prática o DAO 
busca os dados do banco e executa a ação de converter estes em objetos para ser usado pela 
aplicação. No sentido contrário, o DAO pega os objetos, converte em instruções SQL e envia 
para o banco de dados executar.
5

Outros materiais