You are on page 1of 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

Y​URI 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 e​ special 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

4.6 - A 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 ​(ENCONTRO ANUAL 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 h​ abilidosos, 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, p​ ortanto, 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 (​PHPMyAdmin​ e ​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:

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.

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

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);

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);

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);

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);

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;

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.

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 t​ ambé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):

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 p​ ode ser 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 Aumento


Criptografado

bazc9+bXEvqLDwnqjNwq5Q
teste 5 25 400%
==

Yuri Vasconcelos de jsAAg2YpND1OkF/sIyybW


32 46 30.4%
Almeida Sá MO2bCh4Ebb///Dpo84yusE=

33.141...64201 73j8….yD5e 1344 34.4%


1000

Tabela 01 - Comparativo de tamanho da ​string​ nã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.

Figura 11 - Laço de repetição em ​PHP​ que 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 Tempo médio Tempo máximo Desvio Padrão do
10 passes (10000 linhas) dos 10 passes tempo de cada
passe

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 Tráfego médio Tráfego máximo Desvio Padrão do


dos 10 passes (10000 linhas) dos 10 passes Tráfego de cada
passe

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
04:
34

Tabela Tempo mínimo dos Tempo médio Tempo máximo Desvio Padrão do
10 passes (10000 linhas) dos 10 passes tempo de cada
passe

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 Tráfego médio Tráfego máximo Desvio Padrão do


dos 10 passes (10000 linhas) dos 10 passes Tráfego de cada
passe

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 g​ erador, 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. Lei​ de 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.

DALL​OGLIO, 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.