Вы находитесь на странице: 1из 39

FACULDADE DE TECNOLOGIA DE SÃO ROQUE FATEC SÃO ROQUE

YURI VASCONCELOS DE ALMEIDA SÁ

A CRIPTOGRAFIA DE DADOS SENSÍVEIS EM SISTEMAS DE INTEGRAÇÃO SOCIAL OPEN-SOURCE

São Roque

2018

1

YURI VASCONCELOS DE ALMEIDA SÁ

A CRIPTOGRAFIA DE DADOS SENSÍVEIS EM SISTEMAS DE INTEGRAÇÃO SOCIAL OPEN-SOURCE

Trabalho de Graduação apresentado à Faculdade de Tecnologia São Roque, como parte dos requisitos necessários para a obtenção do título de Tecnólogo em Sistemas para Internet.

Orientador: Prof.ª Ms Adriana Paula Borges

São Roque

2018

2

LISTA DE ABREVIATURAS E SIGLAS

AES - Advanced Encryption Standard ASCII - American Standard Code for Information Interchange CF - Constituição Federal CPU - Central Process Unit CRUD - CReate Update Delete FATEC - Faculdades de Tecnologia do Estado de São Paulo HTML - HyperText Markup Language HTTP - Hyper Text Transfer Protocol HTTPS - Hyper Text Transfer Protocol Secure ISO - International Organization for Standardization LAMP - Linux Apache Mysql PHP LDB - Lei de Diretrizes e Bases MVC - Model View Controller NIST: National Institute of Standards and Technology PHP - PHP: Hypertext Preprocessor PHP5 - PHP: Hypertext Preprocessor Version 5 RAM - Random Access Memory SIA - Sistema Integrado de Avaliações SSL - Secure Socket Layer UTF - Unicode Transformation Format

3

Dados Internacionais de Catalogação-na-Publicação (CIP) Divisão de Informação e Documentação

Sá, Yuri Vasconcelos de Almeida A Criptografia de Dados Sensíveis em Sistemas Open-Source. São Roque, 2018.

33f.

Trabalho de Graduação – Curso de Tecnologia em Sistema para Internet FATEC de São Roque, 2018. Orientador: Prof.ª Mª Adriana Paula Borges. 1. Sistemas para Internet. I. Faculdade de Tecnologia. FATEC de São Roque: II. A Criptografia de Dados Sensíveis em Sistemas Open-Source.

REFERÊNCIA BIBLIOGRÁFICA – Sá, Yuri Vasconcelos de Almeida. A Criptografia de Dados Sensíveis em Sistemas Open-Source.2018. 33f. Trabalho de Graduação - FATEC de São Roque.

CESSÃO DE DIREITOS NOME DO AUTOR: Yuri Vasconcelos de Almeida Sá TÍTULO DO TRABALHO: Design De Interação Centrado no Usuário TIPO DO TRABALHO/ANO: Trabalho de Graduação / 2018.

É concedida à FATEC de São Roque permissão para reproduzir e emprestar cópias deste Trabalho somente para propósitos acadêmicos e científicos. O autor reserva outros direitos de publicação e nenhuma parte deste Trabalho pode ser reproduzida sem a autorização do autor.

Yuri Vasconcelos de Almeida Sá RG 26.602.212-1

4

DEDICATÓRIA

Dedico o trabalho e o curso como um todo a minha esposa Paula, cuja força sobrenatural me carrega.

5

AGRADECIMENTOS

Agradeço a minha família pelo apoio durante o curso que enseja este trabalho, pelas horas ausentes e pelas obrigações assumidas.

A

Paula, minha esposa pelo esforço, abnegação e ajuda.

E

a todos os professores que tocaram minha vida ao longo do processo, guiando e

ajudando, fazendo parcerias e amizades para a vida.

6

RESUMO

As tecnologias da informação atuais revolucionaram a sociedade em larga escala nos últimos anos, porém, como todas as tecnologias existem falhas. Para o usuário comum, a pior falha que pode existir é a invasão da sua privacidade, que pode ter conseqüencias devastadoras em sua vida pessoal, principalmente com dados sensíveis trafegando em todo tipo de sistema pela rede. Este trabalho oferece um método de criptografia gratuito e funcional em nível de aplicação, não requerendo nenhum tipo de software especial ou contratação de serviço. Analisa os resultados e dispõe sobre a qualidade do sistema proposto.

7

ABSTRACT

New information technologies revolutionized the society in large scale in the last few years, but as all new technologies, there are flaws. To the common user, the worst flaw in a information system is the breach of privacy that can lead to overwhelming consequences in private life, remarkably with sensitive data circulating in all kinds of systems around the web. This work offer a method to cryptography data freely and funcional in application layer, not needed any special software or service fee. Analyzing the results and discourse about the quality of the system.

8

LISTA DE FIGURAS

Figura 1 - Diagrama de Caso de Uso

21

Figura 2 - Mapa básico do Site

22

Figura 3 - Diagrama Entidade Relacionamento (DER)

23

Figura 4 - Definição da tabela nucleo

24

Figura 5 - Definição da tabela escola

25

Figura 6 - Definição da tabela aluno

26

Figura 7 - Definição da tabela avaliacao

27

Figura 8- Definição da tabela usuario

28

Figura 9 - Modelo do fluxo de dados

29

Figura 10 - Bloco de código implementando a criptografia

30

Figura 11 - Laço de repetição em PHP que gera a massa de dados

32

9

Sumário

1.

Introdução

11

1.1 - Objetivo

12

1.2 - Justificativa

13

2.

Referência Bibliográfica

14

2.1.

Conceitos Básicos

14

2.2

- A criptografia na internet

16

2.2.1 - O transporte seguro de informações

16

2.2.2 - Armazenamento seguro das informações

17

3 - Metodologia

18

4 - Sistema Desenvolvido

19

4.1

- Proposição do Sistema

19

4.2

- Limitações do Sistema

20

4.3

- Diagrama de Caso de Uso

21

4.4.

- Mapa do Site

22

4.5

- Banco de dados

22

4.5.1

- Modelagem do Banco de Dados

23

4.5.1.1 - Diagrama Entidade Relacionamento

23

4.5.1.2 - Tabelas

24

4.5.1.2.1 - Tabela nucleo

24

4.5.1.2.2 - Tabela escola

25

4.5.1.2.3 - Tabela aluno

26

4.5.1.2.4 - Tabela avaliacao

26

4.5.1.2.5 - Tabela usuarios

27

4.6

- Implementação da Criptografia

29

10

4.6.1 - O Algoritmo escolhido

29

4.6.2 - A implementação em PHP

30

4.7 - A coleta de dados

31

4.8 - Análise dos dados

34

5. Considerações Finais

36

Referências

37

11

1. Introdução

Desde a constituição de 1988, a educação deve ser universal (Art. 205, CF), no entanto a Lei nº 9.394/96 – Lei de diretrizes e bases da educação nacional (LDB), define educação especial, assegura o atendimento aos educandos com necessidades especiais e estabelece critérios de caracterização das instituições privadas sem fins lucrativos, especializadas e com atuação exclusiva em educação especial para fins de apoio técnico e financeiro pelo poder público. Essas entidades são referidas genericamente como núcleos. Ou seja, temos um número alto de alunos com necessidades especiais, que são atendidos pelos núcleos, mas que estudam em escolas regulares. Notou-se que a comunicação entre estas duas entidades é precária, o que causa um enorme transtorno, pois muitas vezes a deficiência é comportamental e ambas as partes devem estar cientes de ocorrências. Neste prisma, com uma iniciativa inédita a FATEC São Roque firmou parceria com a Prefeitura do Município para que o sistema pudesse ser desenvolvido a título gratuito e open-source para facilitar a integração entre essas duas entidades. E assim foi feito. O nome dado é Sistema Integrado de Avaliações (SIA) e faz uma integração entre a Escola e o Núcleo, provendo relatórios, na forma de avaliações, sobre os educandos. O sistema consiste em uma plataforma totalmente Web, com um banco de dados simples (não criptografado), e disponibilizado através de Pré-Processamento Server-side (PHP).

Em linhas gerais o SIA, permite que um gestor do núcleo registre o mesmo e gerencie alunos e escolas, uma vez registrados os usuários do núcleo e as escolas (que também tem autenticação no sistema) pode-se criar avaliações, que consistem em um grande campo de texto formatável, anexos e meta-dados (usuário, criação, privacidade e etc.). Para que o sistema fique de fato útil a seus usuários foi necessário adicionar informações pessoais dos alunos, que contêm dados sensíveis devido a natureza extremamente íntima. Muitas vezes informações como estas, até mesmo sua mera participação em um núcleo podem causar ainda mais sofrimento a quem é afligido por alguma mazela de cunho emocional.

12

Embora a própria conexão possa ser criptografada através de SSL (HTTPS), o que

torna a própria conexão virtualmente impossível de ser interceptada (PROTOCOLO HTTP X

PROTOCOLO HTTPS,2009). Existem outras inúmeras maneiras de se comprometer um

sistema, sendo a segunda opção na lista de prioridades o próprio banco de dados, que através

de técnicas de injeção, pode ter seus dados lidos por um usuário malicioso. Técnicas de

injeção tem se tornado cada vez mais populares nos últimos anos, com o aumento da adoção

de HTTPS, ensejando até a criação de ferramentas que automatizam o processo e até mesmo

ensinam técnicas de injeção, tal qual o SQLMAP (ENCONTROANUAL DE TECNOLOGIA

DA INFORMAÇÃO, 2017).

Existe criptografia de banco de dados diretamente, porém esta é dispendiosa e

causa grandes transtornos quando o dado por acaso, chega desformatado o que diminui a

confiabilidade e resiliência do projeto.

Devido às capacidades da linguagem escolhida (PHP) tais quais, orientação a

objetos e disponibilidade de Frameworks MVC (DALL´OGLIO, 2015), é possível de maneira

muito simples criptografar o dado somente no banco de dados, tornando o dado então

disponível de forma clara (descriptografada) para todo o sistema. Neste caso, mesmo que o

banco de dados sofrer uma invasão, os dados serão inúteis.

1.1 - Objetivo

Este trabalho destina-se avaliar a implementação de uma criptografia de dados

dentro da arquitetura MVC em PHP, na camada de Controle, sem que o sistema seja afetado

de maneira global O Objetivo é possibilitar inclusive criptografia seletiva dos campos, o que

pode trazer melhorias em relação a velocidade na qual os dados são traduzidos de sua forma

criptográfica.

Também tenta estabelecer, através de uma base teórica a eficiência da criptografia

de programa sobre outros métodos disponíveis e sua viabilidade em um ambiente de

hospedagem e operação em escala. Implementar métricas de utilização dos recursos do

servidor (particularmente Espaço em disco e transferência). Além de estabelecer um

paradigma (índice) de velocidade que vai estabelecer a complexidade da criptografia.

13

Devido a característica pública do projeto (onde qualquer pessoa pode registrar

um núcleo de forma gratuita e isenta), é necessário manter a utilização dos recursos de

servidor a um mínimo aceitável, equilibrando o custo computacional com a escalabilidade.

1.2 - Justificativa

A segurança da informação é um assunto atual e recorrente em muitos campos de

pesquisa, cada vez mais serviços utilizam data-mining (processo de aquisição de dados) para

construção de perfis de usuário e o advento do Big Data que traz análises cada vez mais

precisas e de diversas fontes para classificar seu público já trazem cada vez mais questões

éticas e de direito à própria informação disponível na internet.

Esses classificadores utilizam em sua grande maioria, dados legais ou seja, que

não foram obtidos através de fraude ou outros métodos ilegais porém, uma grande parcela de

invasões é publicada na “surface” web que é indexada pelos buscadores (dependendo do tipo

de ataque, pode ter sido somente um gracejo, uma demonstração de habilidade, ou ainda um

resgate não pago), e a capacidade dos algoritmos das empresas de data-mining é imensa em

associar um dado a outro, podendo então criar um perfil ostensivo da vida pessoal de um

indivíduo de forma automática. Que pode ser usada para os mais diversos fins, até mesmo

humilhação, chantagem e ameaça.

Então, um pequeno banco de dados comprometido pode vir a fazer parte de um

perfil detalhado de sua vida, até a senha que você utiliza normalmente em seus serviços. Daí

surge a necessidade de barreiras cada vez mais fortes de acesso a estes dados e a criptografia,

tal qual ela está posta hoje é um caminho muito viável, pois apesar de representar custos

adicionais (principalmente hardware) para operação de um sistema, ela pode representar uma

barreira intransponível até mesmo para hackers habilidosos, que embora tenham conseguido

burlar as proteções de um banco de dados pode se deparar com dados irrelevantes.

14

2. Referência Bibliográfica

Nesta seção conceitos teóricos serão explanados e referenciados para o entendimento básico do trabalho, além da evolução da Criptografia desde o seu surgimento até o momento.

2.1. Conceitos Básicos

Para podermos livremente falar sobre criptografia é importante definir exatamente

o que é e como se situa.

A Criptografia faz parte de uma ciência que é a Criptologia. Segundo Couto

(2008, p. 18) “a Criptologia é uma disciplina científica que estuda os conhecimentos e as técnicas necessárias para a realização da criptoanálise (ou seja, da solução das mensagens criptografadas) e da própria criptografia (que é a codificação da escrita)”. Podemos, portanto, inferir que a Criptografia trata da criação de uma forma

alternativa de escrita da informação para que sua transmissão seja secreta e confidencial, onde somente o receptor, munido dos códigos ou cifras, poderá efetuar a leitura da informação (SINGH, 2001).

A criptoanálise é o ato ou método de como transformar códigos e cifras em escrita

e seu reverso, item que não será especificamente estudado ou analisado neste trabalho.

É preciso entender a importância da criptografia e como ela permeou as mais

diversas áreas da história ocidental. Apenas no século XX a criptografia começou a ser utilizada em outros setores da sociedade como comércio ou computação. Embora tenha tido um vasto uso ao longo dos

tempos, somente com a evolução tecnológica e importância de estado crítico durante o período de guerra que ela passou a tomar contornos mais populares.

É importante também estabelecer que a esteganografia não é um tipo de

criptografia, é somente a ocultação de uma informação sob outra (sem alteração de sua forma ou mensagem), não sendo necessária a criptoanálise para a verificação de seu conteúdo, somente a localização. Dentro de criptografia, temos dois principais métodos que são as Cifras e os Códigos. Segundo Singh (2001, p. 47) “tecnicamente um código é definido como uma

15

substituição de palavras ou frases, enquanto a cifra é definida como uma substituição de

letras”.

Esta definição, clássica, trata da unidade de criptografia ou seja, qual a menor

porção a ser substituída na mensagem criptografada, baseada em significados.

Existe ainda que uma combinação de cifras e códigos, a Supercifragem ou

Recifragem (TKOTZ, 2005) é a mistura de diferentes técnicas de cifragem, por exemplo,

cifra-se um texto com uma técnica e depois cifra com a mesma técnica ou com outra.

Existem, porém, outros tipos de classificações de cifras (algorítmos), no que diz respeito às

chaves: os de algoritmos simétricos, que possuem chave secreta; e os assimétricos, com

chaves públicas e privadas.

Essa classificação se dá separando os algoritmos pela sua capacidade de

criptografar e descriptografar a informação utilizando uma chave para os dois atos ou duas,

uma para criptografar e outra para descriptografar.

A criptografia computacional praticada como padrão da indústria de transmissão

de informações sensíveis utiliza algoritmos complexos para que seja gerado o código, sendo

essa a própria criptoanálise.

Uma das grandes revoluções da criptologia foi o advento da criptografia

assimétrica. Ela consiste na obtenção de chaves públicas e privadas através de funções

matemáticas chamadas de Mão Única, na qual, segundo Tkotz (2005), “a cifragem é feita

através de uma chave pública e a decifração é feita através de uma chave privada que não

pode ser calculada com base na chave pública”. Como exemplo, destacamos a Cifra AES,

escolhida para o desenvolvimento deste trabalho.

Com base no aumento do poder computacional disponível ao grande público, cada

vez mais algoritmos complexos, impossíveis de serem implementados sem computadores tem

sido utilizados e com grande sucesso. Portanto, houve a necessidade de uma classificação

mais específica quanto à criptografia, uma divisão entre Clássica e Moderna. A primeira vai

do início da criptologia até a metade do século XX, quando surge a chamada Teoria da

Informação (ou Teoria Matemática da Comunicação). Tal teoria oferece base sólida para o

desenvolvimento de uma nova criptografia, reconhecida universalmente e padronizada.

16

2.2 - A criptografia na internet

A popularização da internet modificou muitos hábitos e cada vez mais atos da

vida cotidiana foram transferidos para a internet, com essa transferência, muitos aspectos legais e de segurança tiveram que ser revistos para que existisse o mínimo de segurança nas comunicações sensíveis. Para isso muitos protocolos e algoritmos foram utilizados para garantir a segurança dos dados que essa exposição aumentada pela internet das informações sensíveis do usuário. Para proteger os dados de forma segura na internet, podemos destacar dois métodos para garantir a segurança dos dados na internet. O Transporte Seguro das Informações e o Armazenamento Seguro das informações.

2.2.1 - O transporte seguro de informações Como uma disciplina da computação e da troca de informações existem padrões

para a correta aplicação de uma política ou sistema de segurança criptográfica no transporte, o mais famoso e mais utilizado é o SSL. Este protocolo é um conjunto de práticas e regras de segurança no transporte. SSL promove uma camada de criptografia para que as informações possam trafegar sem que sejam interceptadas e descriptografadas.

O SSL foi desenvolvido pela Netscape Corporation no ano de 1994, tendo sua

versão alterada de 1.0 para 2.0 no ano de 1995. Daí para frente, os browsers homologados e servidores de páginas como Apache e IIS, passaram a trazer integrados a si suporte para o uso de SSL. O SSL também é usado na maioria dos sites que realizam transações comerciais, como os de compras e bancos. O uso de SSL teve grande impulso com a chegada dos certificados digitais, pois essa chegada permitiu que o uso de logins e senhas possa, em alguns casos, ser substituído pelo seu uso. É importante ressaltarmos que o SSL não é um algoritmo de criptografia; mas o responsável por implementar uma via segura de troca de informações. Esse sistema não influencia na escolha de um determinado padrão de criptografia ou certificado digital; para isso, podemos escolher uma gama de protocolos que desempenham essa função. Apesar de transparente para o usuário, o SSL exige uma grande estrutura para seu funcionamento adequado, hospedagens com servidores com suporte SSL custam mais caro. Devido sua transformação de dados, aumenta-se muito o tamanho efetivo da carga (payload)

17

a ser transferida, exigindo também mais banda de transferência (bandwidth). Além de custos

com publicação e acreditação de chaves públicas e certificação eletrônica. O que geralmente

inviabiliza sua utilização.

2.2.2 - Armazenamento seguro das informações

A segurança não só deve existir durante o tráfego entre os servidores e o Browser

ela deve existir também onde os dados ficam armazenados, o Banco de Dados. O banco de

dados é um aplicativo que armazena e gerencia o fornecimento de informações para a

aplicação (sistema Web),e se o mesmo tiver seu mero acesso comprometido (em geral,

usuário e senha), é possível que os dados sejam totalmente vazados, representando uma

brecha de segurança catastrófica.

Os sistemas modernos de banco de dados provém uma forma com uma camada

própria de criptografia, ou seja, os dados são entregues de forma clara (descriptografada) e ele

se encarrega de armazenar os dados de forma criptografada. Este método é seguro e no geral

rápido (embora mais lento que dados claros).

Esse método apresenta uma séria desvantagem que é a forma como ele é entregue

ao Sistema de banco de dados, se houverem caracteres especiais tais como assentos ou barras,

e estas não coincidirem com a paginação de caracteres ASCII (ex,: UTF-8 e ISO), pode haver

perda total das informações, além disso existe a possibilidade de utilizarem mais de uma fonte

de dados (mais de um servidor de aplicação), e todos eles teriam que compartilhar a mesma

página de caracteres ASCII.

18

3 - Metodologia

O método do estudo será empírico e os dados comparados contra uma conexão

sem criptografia, em um servidor Apache com PHP5, com Banco de dados mysql sobre um

sistema operacional Linux(LAMP). Serão propostos experimentos e subsequente análise dos dados. Este trabalho procura avaliar os resultados descritivamente onde serão coletados dados dos servidores com e sem criptografia. Para todas as tabelas que contenham dados criptografados, será feita uma versão

com 10000 (dez mil) de registros normalizados e aleatórios sem criptografia, e sua versão com as colunas sensíveis criptografadas. Para que os dados tenham uma escala fácil de ser revista e analisada.

O critério qualitativo do trabalho, que é a própria viabilidade da criptografia em

um projeto gratuito e open-source, portanto, será avaliado. Outros critérios técnicos serão avaliados quantitativamente, dentre eles os que se destacam, pela sua criticidade, são: espaço em disco, memória utilizada, utilização da rede, tempo teórico e prático de transferência. Cada tabela terá sua performance medida diretamente no banco através de ferramentas de gestão (PHPMyAdmine Mysql Workbench), Será medida a inserção (INSERT), sendo estas as operações que mais utilizam recursos do servidor. Cada operação em cada tabela, será repetida 10 vezes e as estatísticas de cada passagem serão coletadas. Estes dados vão ser analisados estatisticamente (média das repetições, máximo, mínimo e desvio padrão) para que ruídos ou processos externos influenciem o resultado.

19

4 - Sistema Desenvolvido 4.1 - Proposição do Sistema Batizado de Projeto SIA (Sistema Integrado de Avaliações) o sistema vai fazer o contato entre a escola e o núcleo assistencial de maneira ordenada e concentrada. Os registros ficarão disponíveis com data e hora de sua inserção e com mídia (fotos, vídeos e arquivos) anexados.

O sistema em termos operacionais será montado utilizando um Framework MVC escrito em PHP, com templates Bootstrap para uma perfeita adaptação nas plataformas disponíveis.

As avaliações dentro do SIA são instrumentos de comunicação e arquivamento, podem ser classificados como relatórios de acontecimentos ou progresso que ficarão associados ao aluno, criando um histórico, uma espécie de prontuário, que poderá ser pesquisado e impresso quando necessário. Esta capacidade de gerar relatórios pode ser utilizada como medidor de progresso ou ainda um ponto de sintonia entre a escola e o núcleo assistencial.

Do ponto de vista prático, o responsável pelos dados será sempre o núcleo, cabendo a ele o registro dos alunos e das escolas. Haverá também um controle de privacidade muito básico das avaliações (Interna ou Externa), se for interna ela será vista somente pelo núcleo e seus usuários, se for Externa ela poderá ser vista pelo núcleo e pela escola a qual o aluno foi atribuído. Cada instalação do sistema poderá comportar vários (infinitos) núcleos e todos eles poderão coexistir em um mesmo sistema, assegurada a privacidade e isolamento dos dados, isso é possível graças a técnicas de ACL, Access Control Lists,(Listas de Controle de Acesso), que são comuns em sistemas Web. Isso garante que um mesmo sistema possa ser utilizado por um número elevado de usuários. Para as tabelas previstas, serão utilizados dois tipos de templates, um formulário que irá inserir e atualizar registros e um que irá listar e deletar registros. Para que tenha uma maior reutilização do código, o Front-End (HTML que vai enviar e receber dados dos scripts PHP) é gerado com todas funções, sendo somente exibido os botões de ação para cada função.

20

Devido a capacidade de upload de fotos presentes em todos smartphones atuais, é

possível no mesmo formulário enviar fotos a partir de telefones e desktops.

4.2 - Limitações do Sistema

Devido às limitações orçamentárias das instituições de assistência que promovem

a integração, é de elevada importância que o projeto tenha o custo reduzido em todas as suas

etapas: implantação, integração e manutenção.

Foi estabelecido então, que uma hospedagem compartilhada LAMP (Linux,

Apache, Mysql, PHP) deve comportar a operação devido ao baixo custo e performance

satisfatória.

Algumas linhas gerais foram definidas para a manutenção dos custos com todas as

funcionalidades descritas no diagrama de caso de uso, tais quais:

1. Acessibilidade Mobile e Desktop: Todos as interações deveriam comportar os

dois tipos de acesso no mesmo arquivo/template, para possibilitar a

transferência ágil de informações, independente de plataforma.

2. Minimização tabelas: Redução das tabelas e campos/colunas específicos para

operação do sistema, menor utilização dos recursos dos servidores e rede.

3. Interação livre, somente o mínimo de informação necessária ao funcionamento

do sistema é exigida, fica a critério do usuário o que publicar.

4. Segurança de armazenamento: Devido ao alto custo da implantação e

manutenção (certificados e hospedagem diferenciada) da criptografia de

transporte, somente a criptografia de armazenamento será implementada.

Dentro do universo de armazenamento, foram especificados:

a. Criptografia na aplicação, é a aplicação PHP que vai criptografar e

descriptografar os dados durante a operação normal, devido a natureza

OpenSource e baixo custo do projeto seria inviável manter um banco de

dados criptografado diretamente no DBMS (Database Management

System) pois os sistemas destinados são muito heterogêneos e podem

causar perda das informações.

21

b.

Somente informações sensíveis serão criptografadas, informações que

têm potencial de dano se comprometidas, ex: senhas, nomes, e-mails.

Chaves e outros itens não serão criptografados para uma redução dos

recursos necessários.

4.3 - Diagrama de Caso de Uso

Durante a pesquisa, foram levantados os requisitos funcionais do sistema,

inclusive com uma pesquisa dos elementos físicos utilizados até então (avaliações de papel e

cartas entre as escolas e o núcleo).

Durante a pesquisa foi desenvolvido um Diagrama de Caso de Uso, conforme

ilustra a Figura 1:

um Diagrama de Caso de Uso, conforme ilustra a Figura 1: Figura 1 - Diagrama de

Figura 1 - Diagrama de Caso de Uso

No diagrama podemos ver que embora a escola tenha acesso ao cadastro de

alunos, ela tem acesso de leitura (Read) somente e um acesso limitado às avaliações, sendo

que o núcleo, através do administrador e seus profissionais fica a cargo do registro e operação

do sistema.

22

4.4 - Mapa do Site

Para atender algumas das limitações impostas pelo projeto, o site deveria ser diminuto e ágil, o que enseja pouquíssimas páginas e uma reutilização grande de páginas, apenas alterando seus papéis. Para isso somente 2 páginas, no máximo, foram criadas para operar cada tabela e o mapa básico do site da Figura 02 descreve estas páginas.

o mapa básico do site da Figura 02 descreve estas páginas. Figura 2 - Mapa básico

Figura 2 - Mapa básico do Site

Para todas as entidades de documentos existem Listagem e impressão (um mesmo arquivo html é utilizando, formatando a impressão através de CSS-Print).

4.5 - Banco de dados

Para o desenvolvimento do sistema foi projetado um Banco de Dados que não só comportasse as necessidades práticas, como tivesse estruturas de controle que assegurassem a

23

operação e a privacidade dos dados. Para isso foram criadas tabelas e campos no banco de

dados que pudessem ser filtrados pelo Front-End.

4.5.1 - Modelagem do Banco de Dados

Embora o banco de dados tenha sido modelado para atender as limitações

impostas pelo projeto, muitos campos são destinados ao relacionamento (inseridos

graficamente) e outros são preenchidos automaticamente como Timestamps e núcleo

pertencente (para filtros e auditoria).

4.5.1.1 - Diagrama Entidade Relacionamento

e auditoria). 4.5.1.1 - Diagrama Entidade Relacionamento Figura 3 - Diagrama Entidade Relacionamento (DER) Na figura

Figura 3 - Diagrama Entidade Relacionamento (DER)

Na figura 3 evidenciamos graficamente que o núcleo é o ponto central do projeto,

é através dele que as outras entidades funcionam e todas as tabelas tem um campo onde o

núcleo pertecente é referenciado (link_id_nucleo), assim somente os usuários deste núcleo

podem ver os registros e é criado um universo de registros próprio.

24

4.5.1.2 - Tabelas 4.5.1.2.1 - Tabela nucleo

A tabela núcleo é a tabela na qual a entidade é criada e todos os filtros e registros

são referenciados a ela de alguma forma, informe exemplificado pela Figura 4, a definição da tabela é:

id - Chave Primária, (auto incrementada);

documento - Algum documento para registro do núcleo;

nome - Nome do núcleo no sistema (Criptografado);

email - Email do núcleo dentro do sistema, será utilizado para comunicação do sistema com o administrador do núcleo (Criptografado);

obs - Alguma observação de interesse do administrador do núcleo;

data_criacao - Data com hora da criação do núcleo no sistema (Automático);

data_ultima_alteracao - Data com hora da última alteração do núcleo no sistema (Automático);

arquivos - caminho no sistema de arquivos anexados (Criptografado);

- caminho no sistema de arquivos anexados (Criptografado); Figura 4 - Definição da tabela nucleo É

Figura 4 - Definição da tabela nucleo

É importante observar que todos os campos que poderiam ter limitações (por

convenção), como e-mail (que poderia ter no máximo 255 caracteres, portanto, varchar), estão definidos como TEXT pois este tipo de dado em MySQL não tem limites de caracteres, o que é necessário para a criptografia.

25

4.5.1.2.2 - Tabela escola

A tabela escola é a entidade que armazena e gerencia os dados de cada escola, até

mesmo suas credenciais de acesso, dados para contato e estruturas de controle. Na figura 5

temos uma representação de sua estrutura.

id - Chave Primária, (auto incrementada);

documento - Algum documento para registro da escola (ex.: CNPJ);

nome - Nome da escola no sistema (Criptografado);

email - Email da escola dentro do sistema, será utilizado para comunicação do sistema com o usuário escola (Criptografado);

data_criacao - Data com hora da criação da escola no sistema (automático);

data_ultima_alteracao - Data e hora da última alteração da escola no sistema (Automático);

senha - senha registrada na criação do registro escola;

nome_usuario - Nome de usuário utilizado para login da escola no SIA;

arquivos - caminho no sistema de arquivos anexados (Criptografado);

link_id_nucleo - Chave estrangeira que referencia o núcleo (Obrigatório);

- Chave estrangeira que referencia o núcleo (Obrigatório); Figura 5 - Definição da tabela escola 4.5.1.2.3

Figura 5 - Definição da tabela escola

4.5.1.2.3 - Tabela aluno

A tabela aluno também está obrigatoriamente ligada a um núcleo e opcionalmente

a escola, ela armazena dados essenciais a identificação do aluno. É essencial que os dados aqui contidos sejam criptografados. Na figura 6 temos uma representação gráfica desta tabela.

26

id - Chave Primária, (auto incrementada);

documento - Algum documento para registro do aluno (ex.: RG);

link_id_escola - Chave estrangeira que referencia a escola (Opcional);

link_id_nucleo - Chave estrangeira que referencia o núcleo (Obrigatório);

obs - observação sobre o aluno;

data_criacao - Data com hora da criação da escola no sistema (Automático);

data_ultima_alteracao - Data com hora da última alteração da escola no sistema (automático);

nome - Nome real do aluno (Criptografado);

data_nascimento - Data de nascimento do aluno;

cod_controle - Código que identifique o aluno no núcleo (Opcional);

arquivos - caminho no sistema de arquivos anexados (Criptografado);

- caminho no sistema de arquivos anexados (Criptografado); Figura 6 - Definição da tabela aluno 4.5.1.2.4

Figura 6 - Definição da tabela aluno

4.5.1.2.4 - Tabela avaliacao A tabela avaliação é a entidade que armazena as informações das avaliações dos

alunos, é o ponto de contato entre a escola e o núcleo, a razão de existir do SIA. Na figura 7 temos uma representação gráfica desta tabela.

id - Chave Primária, (auto incrementada);

27

link_id_aluno - Chave estrangeira que referencia o aluno (Obrigatório);

data_avaliacao - Data que ocorreu o evento;

link_id_usuario - Chave estrangeira que referencia o usuário que elaborou e inseriu (Obrigatório, Automático);

texto_avaliacao - Corpo da avaliação, em HTML (Obrigatório, Criptografado);

anexos - Caminho de arquivos anexados ao registro (Criptografado);

data_criacao - Data com hora da criação da escola no sistema (Automático);

data_ultima_alteracao - Hora da última alteração do registro (Automático);

privacidade - Chave de permissão (Interna/Externa);

profissional - Nome do profissional responsável pela avaliação (Criptografado);

profissao - Função do profissional;

link_id_nucleo - Chave estrangeira que referencia o núcleo (Obrigatório);

- Chave estrangeira que referencia o núcleo (Obrigatório); Figura 7 - Definição da tabela avaliacao 4.5.1.2.5

Figura 7 - Definição da tabela avaliacao 4.5.1.2.5 - Tabela usuarios

A tabela usuários é responsável por armazenar os dados de acesso e controle dos usuários ao sistema, uma tabela de sistema. Na figura 8 temos uma representação gráfica desta tabela.

id - Chave Primária, (auto incrementada);

28

documento - Algum documento para registro do usuario (ex.: RG,

Criptografado);

email - Email do usuário para ser utilizado em comunicações do sistema

(Criptografado);

senha - Senha da credencial de acesso do usuário (Obrigatório,

Criptografado);

admin_nucleo - Chave para identificação de privilégios de administração de

núcleo;

link_id_nucleo - Chave estrangeira que referencia o núcleo (Obrigatório);

link_id_escola - Chave estrangeira que referencia a escola (Opcional);

data_criacao - Data com hora da criação da escola no sistema (Automático);

data_ultima_alteracao - Data com hora da última alteração da escola no

sistema (Automático);

nome_usuario - Nome de usuário utilizado para login do usuario no SIA;

- Nome de usuário utilizado para login do usuario no SIA; Figura 8- Definição da tabela

Figura 8- Definição da tabela usuario

4.6 - Implementação da Criptografia

O código PHP de todo o sistema segue o padrão MVC e é basicamente um CRUD

de cada tabelas, seguindo o mesmo formato com somente dois padrões, lista e formulário.

A criptografia será feita interceptando os dados na camada de controle, campo a

campo, ou seja, antes dos dados seguirem para a camada de Modelo (Banco de dados),

29

executando-se uma função armazenada em um objeto, conforme descreve a Figura 9 abaixo,

no exemplo somente os dados do Campo-Coluna 2 são criptografados.

somente os dados do Campo-Coluna 2 são criptografados. Figura 9 - Modelo do fluxo de dados

Figura 9 - Modelo do fluxo de dados

Se valendo da mesma estratégia tanto para a inserção como para a recuperação

(leitura dos dados), onde o dado sai criptografado do banco de dados, é recuperado por uma

consulta SQL, é descriptografado pelo Back-end, na camada de Controle e somente aí é

passado para o Formulário ou Lista (table) no Front-end(camada View).

4.6 - A criptografia

4.6.1 - O Algoritmo escolhido

Seguindo o padrão da indústria (AES), o algoritmo de criptografia escolhido para

o SIA foi o Rjindael, presente em virtualmente todas as linguagens de programação.

Em 2 de outubro de 2001, o NIST anunciou o algoritmo Rijndael como vencedor

de um concurso para a escolha de um algoritmo para se tornar padrão da indústria, dado suas

melhores qualificações em termos de segurança, desempenho, eficiência, facilidade de

implementação e flexibilidade. (2001, NIST)

O algoritmo Rijndael foi desenvolvido por Joan Daemen, da Proton World

International, e Vincent Fijmen, da Katholieke Universiteit Leuven. O Rijndael é um

algoritmo simétrico com chaves de 128, 192 e 256 bits e blocos cifrados de 128, 192 e 256

bits também. A natureza do algoritmo permite que o tamanho das chaves e dos blocos seja

múltiplo de 32 bits. (2003, NIST)

30

4.6.2 - A implementação em PHP Em termos práticos, o Rjindael é de facil implementação, sendo nativo do próprio PHP5,custando poucos recursos à máquina e não existe complexidade para sua utilização nas duas direções, sendo somente necessário que ambas as partes compartilhem uma mesma chave.

Um exemplo da função criptográfica em PHP5 é como segue (Figura 10):

criptográfica em ​ PHP5 ​ é como segue (Figura 10): Figura 10 - Bloco de código

Figura 10 - Bloco de código implementando a criptografia

Esta classe contém as duas funções necessárias para a perfeita criptografia e descriptografia, desde que utilizem a mesma chave (neste caso representada por “FATEC20181234567”). O exemplo utiliza o primeiro grau de criptografia que o algoritmo permite (128 bit), o que basta para uma aplicação com dados massivos e multivariados. Devido a arquitetura MVC este código está totalmente dissociado do banco de dados portanto, seguro, podendo ainda contar com técnicas avançadas de esteganografia da

31

chave, adicionando ainda mais camadas de proteção aos dados, armazenamento da chave em

arquivo ou até mesmo outro servidor.

O algoritmo Rjindael podeser utilizado e convertido para caracteres legíveis, no

entanto, como quase todas as formas de criptografia computacional, há um aumento

significativo de tamanho do texto. Principalmente quando o texto é menor que o vetor de

inicialização do algoritmo (2001, NIST).

Conforme Tabela 01, nota-se que o aumento é bastante expressivo, e não-linear.

Texto

Tamanho

Criptografado

Tamanho

Criptografado

Aumento

teste

5

bazc9+bXEvqLDwnqjNwq5Q

==

25

400%

Yuri

Almeida Sá

Vasconcelos

de

32

jsAAg2YpND1OkF/sIyybW

MO2bCh4Ebb///Dpo84yusE=

46

30.4%

33.141

6420

1

1000

73j8….yD5e

1344

34.4%

Tabela 01 - Comparativo de tamanho da stringnão criptografada e criptografada

4.7 - A coleta de dados

Para que os dados pudessem ser coletados e comparados objetivamente, alguns

algoritmos simples de inserção de massa de dados (aleatórios) foram implementados em PHP

utilizando a função desenvolvida conforme a Figura 11 .

Todos os scripts deste trabalho estão alocados em um repositório Git público,

onde há também informações e descrição a respeito de cada um. (SÁ, 2018)

A medição de espaço e tráfego foi obtida através dos próprios comandos do

servidor MySQL.

A medição de tempo foi feita com o script de inserção, gravando o tempo do

servidor antes e depois da geração de dados. Os dados gerados foram aleatórios, porém

compatíveis com a utilização, respeitando os tipos de dado de cada campo e o tamanho

razoável observado na aplicação.

1 Primeiros 1000 dígitos de pi, incluindo a vírgula

32

Para se aproximar do caso de uso real, o tempo de criptografia do dado, em PHP

(Geração do dado e posterior criptografia) também é computado

Para cada tabela, foram geradas 10000 (dez mil) linhas de dados através de um

laço de repetição for, exemplificado na Figura 11 abaixo.

​ for ​ , exemplificado na Figura 11 abaixo. Figura 11 - Laço de repetição em

Figura 11 - Laço de repetição em PHPque gera a massa de dados

Os scripts foram instalados em um serviço de hospedagem LAMP a preços

populares, para que não houvesse contaminação dos dados, este servidor foi dedicado e os

scripts foram executados serialmente através de includes em um script unificado “gera.php”

(SÁ, 2018).

Os resultados obtidos foram separados em: não-criptografados e criptografados.

Abaixo, na Tabela 02 podemos observar o tempo de inserção das 10000 linhas

contendo dados puros, não criptografados, por 10 vezes repetidas.

33

Tabela

Tempo mínimo dos 10 passes

Tempo médio

Tempo máximo dos 10 passes

Desvio Padrão do tempo de cada passe

(10000 linhas)

aluno

0s

0s

0s

0s

avaliacao

0s

0.9s

1s

0.3s

escola

0s

0.6s

1s

0.48s

nucleo

0s

0.7s

1s

0.45s

usuario

0s

0.6s

1s

0.48s

Tabela 02 - Tempo de inserção da massa de dados não criptografados

A Tabela 03 exibe o tráfego de dados utilizados na inserção de dados não criptografados.

Tabela

Tráfego mínimo dos 10 passes

Tráfego médio

Tráfego máximo dos 10 passes

Desvio Padrão do Tráfego de cada passe

(10000 linhas)

aluno

4211235B

4211038.6B

4211038.6B

19.3B

avaliacao

6347934B

6348166.1B

6348359B

139.81B

escola

5322126B

5322149.7B

5322149.7B

13.85B

nucleo

4046051B

4046125.7B

4046222B

58.58B

usuario

4392027B

4392142.8B

4392206B

56.10B

Tabela 03- Dados trafegados da inserção da massa de dados não criptografados

Os dados criptografados foram coletados rigorosamente da mesma maneira, porém utilizando a função descrita na Figura 08 e criptografando somente os campos marcados na seção 4.3.1.2 deste trabalho e seu resultado está demonstrado abaixo, na Tabela

34

Tabela

Tempo mínimo dos 10 passes

Tempo médio

Tempo máximo dos 10 passes

Desvio Padrão do tempo de cada passe

(10000 linhas)

aluno

6s

6s

6s

0s

avaliacao

5s

5.2s

6s

0.4s

escola

6s

6.6s

7s

0.49s

nucleo

5s

5s

5s

0s

usuario

6s

6.6s

7s

0.48s

Tabela 04 - Tempo de inserção da massa de dados criptografados

A Tabela 05 exibe os dados trafegados em condições de utilização e teste,

Tabela

Tráfego mínimo dos 10 passes

Tráfego médio

Tráfego máximo dos 10 passes

Desvio Padrão do Tráfego de cada passe

(10000 linhas)

aluno

6178980B

6178270.7B

6179457B

74.6B

avaliacao

8067879B

8068169.6B

8068346B

156.45B

escola

7282116B

7282147B

7282180B

19.48B

nucleo

5565997B

5566125.1B

5566256B

68.7B

usuario

5616024B

5616126B

5616230B

60.29B

Tabela 05 - Dados trafegados da inserção da massa de dados criptografados

4.8 - Análise dos dados

É com clareza que observamos um aumento nítido do consumo dos recursos de

servidor e tempo medidos dos dados puros para os dados criptografados.

Em números temos uma imagem mais clara observando a Tabela 06 abaixo:

35

Tabela

Aumento no tráfego médio

Aumento no tempo médio

aluno

46%

 

2

--

avaliacao

27%

477%

escola

36%

1000%

nucleo

37%

614%

usuario

27%

1000%

Tabela 06 - Comparativo entre dados criptografados e não criptografados

O Desvio médio baixo (inferior a 1%), observado em todos os passes da amostra evidencia o quão consistente o sistema insere os dados no banco de dados, sistema não apresenta variações ou ruídos no código em si. Se levarmos em consideração que todos os dados apresentados são medições feitas para lotes de 10000 registros em cada tabela temos por exemplo que para a tabela “avaliacao”, cada registro demorou o equivalente a 0.6 ms para ser criptografado e armazenado (0.5ms do que sua forma pura, descriptografada). Todas as entradas no SIA são feitas de forma manual e através de formulários, que seguem um longo caminho do browser até o banco de dados, e esse 0.5 ms a mais para processamento e armazenagem do dado criptografado seria um atraso de grandeza muito inferior a todas os outros processos do sistema.

2 A medição original era 0 (o que torna impossível uma medida de aumento)

36

5. Considerações Finais

Embora o aumento da utilização dos recursos do servidor seja nítido, é pequeno, pois somente partes dos dados são criptografados, e quanto maior o dado, menor é a diferença entre o dado limpo e criptografado. Se comparado a capacidade de performance que os provedores oferecem, está muito longe de comprometer a utilização. A minimização dos recursos proposta na fase de desenvolvimento otimiza a capacidade de processamento do sistema e torna possível a implementação da criptografia no armazenamento dos registros em sistemas open-source. Reduzindo o custo e viabilizando a proteção de dados mesmo que o usuário tenha um orçamento bastante restrito. Operacionalmente, a demora está na criptografia dos dados, que é feita de forma paralelamente em cada requisição e interpretação do script gerador, que quando é um só registro, não fará a menor diferença ao usuário. Em termos de utilização de recursos, o aumento medido não representa um problema para a execução do sistema, pois estes servidores têm uma capacidade de serviço muito maior do que o uso real do sistema pode representar. Há que se notar que o método divisado neste trabalho não equivale às melhores práticas ou sistemas descritos na literatura ou organizações de padronização, isso se dá pois os sistemas existentes e homologados requerem servidores especiais SSL que evidentemente custam mais caro, o que poderia causar dano ao orçamento das instituições (núcleos) que poderiam alocar recursos em coisas mais interessantes (no desenvolvimento os alunos atendidos, por exemplo). Ainda assim, a qualidade da criptografia utilizada aliada a uma arquitetura de aplicativo que isola os dados e as funções criptográficas cria um ambiente seguro para o armazenamento dos dados.

37

Referências BRASIL. Constituição (1988). Constituição da República Federativa do Brasil. Brasília, DF:

Senado Federal: Centro Gráfico, 1988. 292 p.

BRASIL. Leide Diretrizes e Bases da Educação Nacional. Lei número 9394, 20 de dezembro de 1996.

COUTO, Sérgio Pereira. Códigos & Cifras: da antiguidade à era moderna. Rio de Janeiro (RJ): Novaterra, 2008.

DALLOGLIO, Pablo. PHP: Programando com Orientação a Objetos. 3. ed. São Paulo:

Novatec, 2015. 552 p.

ENCONTRO ANUAL DE TECNOLOGIA DA INFORMAÇÃO, 7., 2017, Passo Fundo. Uso da ferramenta sqlMap para detecção de vulnerabilidades de SQL Injection. Passo Fundo: Ifrs, 2017. 7 p. Disponível em:

<http://eati.info/eati/2017/assets/anais/Longos/L31.pdf>. Acesso em: 13 mar. 2017.

High-Tech Bridge. 300,000 Compromised Accounts Available on Pastebin: Just the Tip of Cybercrime Iceberg. Web site, February 2014.

https://www.htbridge.com/news/300_000_compromised_accounts_available_on_pastebin.htm

l. Acesso em: 13 mar. 2017.

NIST. Cryptographic Standards and Guidelines - Rjindael Ammended https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Standards-and-Guidelines/documen ts/aes-development/Rijndael-ammended.pdf 04 Set. 2003 Acesso em: 13 mai 2018

38

NIST. Commerce Department Announces Winner of Global Information Security

Competition.

https://www.nist.gov/news-events/news/2000/10/commerce-department-announces-winner-gl

obal-information-security 25 Ago. 2001

Acesso em: 13 mai 2018

PROTOCOLO

HTTP

X

PROTOCOLO

HTTPS.

Ituverava:

Fundação

Educacional Ituverava, v. 6, n. 1, 06 abr. 2009. Semestral. Disponível em:

https://dialnet.unirioja.es/descarga/articulo/4033677.pdf. Acesso em: 5 mar. 2018.

SÁ, Yuri Vasconcelos de Almeida. TCC Yuri Sá FATEC 2018. Repositorio GIT

Bitbucket. Disponível em: https://bitbucket.org/yurisa2/tcc-yuri-sa-fatec-2018/. Acesso em:

24 mai. 2018.

SINGH, Simon. O livro dos códigos: A ciência do sigilo – do antigo Egito à

criptografia quântica. Tradução de Jorge Calife. Rio de Janeiro: Record, 2001.

TKOTZ, Viktoria. Criptografia: Segredos Embalados para Viagem. 1. ed. São Paulo:

Novatec, 2005. 355 p.