Baixe o app para aproveitar ainda mais
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
Compartilhar