Você está na página 1de 44

UNIVERSIDADE DO SAGRADO CORAÇÃO

RODOLFO OLIVIERI SIVIERI

DIFERENTES TÉCNICAS DE UTILIZAÇÃO DA


CRIPTOGRAFIA
BAURU
2016
RODOLFO OLIVIERI SIVIERI

DIFERENTES TÉCNICAS DE UTILIZAÇÃO DA


CRIPTOGRAFIA

Pré-Projeto de iniciação científica


apresentada a Pró-reitoria de Pesquisa e
Pós-Graduação como parte dos pré-
requisitos para aprovação do conselho,
sob orientação do Prof. Me. Henrique
Pachioni Martins.
BAURU
2016
RESUMO DO PROJETO

A criptografia é um conjunto de técnicas para camuflar informações legíveis de pessoas que


não podem ter acesso a elas, essas informações são camufladas através de uma chave gerada
pelo algoritmo de encriptação (RSA, MD5, AES entre outras). Essas informações são
chamadas de Cifras, as cifras por sua vez são indecifráveis até que você tenha o mesmo
algoritmo de encriptação. Há dois tipos de chaves criptográficas que podem ser geradas a
partir do algoritmo usado, chaves simétricas e chaves assimétricas. As chaves simétricas
geram uma criptografia de chave única, privada, e só quem possui essa chave pode decifrar a
informação criptografa nela. As chaves assimétricas geram uma criptografia de chave pública
que pode ser decifrada tanto por quem possui a chave original como por quem não possui a
chave pública. Na segurança digital é recomendado sempre utilizar as técnicas de criptografia,
evitando assim que sejam perdidas as informações valiosas ou acabem parando em mãos
indevidas. O objetivo dessa pesquisa é demonstrar por meio do desenvolvimento de um
software a importância da utilização da criptografia em sistemas de informação. No software
desenvolvido foi aplicado os três algoritmos de encriptação RSA, MD5 e AES, onde é
possível realizar o modo “encriptação” e “desencriptação” de uma palavra ou frase, a fim de
demonstrar como funcionam as técnicas de criptografia. Deste modo a ferramenta apresentou
os resultados esperados pois foi possível comparar como os três algoritmos de criptografia se
comportam.

Palavras Chave: Criptografia. Chaves simétricas, assimétricas. Segurança Digital.


RESUMO DO RELATÓRIO

O objetivo desse projeto é demonstrar como a criptografia aplicada e teoria funcionam, para a
demonstração prática foi desenvolvido uma aplicação para demonstrar como as mensagens
são criptografadas. Tendo como conteúdo de aprendizagem – conceitos básicos de
Criptografia (teoria e prática) e programação. Em conformidade com a proposta de iniciação
científica, até o presente momento foram realizadas as etapas: a) Levantamento Bibliográfico:
Foi pesquisado sobre as diferentes formas de criptografias que existem, como aplicá-las em
um projeto e a importância de usar uma criptografia. O levantamento foi feito em diversos
sites, artigos científicos e livros sobre o assunto. b) Desenvolvimento da aplicação: O
desenvolvimento da aplicação já foi concluído e já foram realizados testes. A interface foi
planejada para ser de fácil uso e entendimento, consistindo apenas em um input para a
mensagem do usuário, composto por um campo onde o usuário pode escolher entre
“encriptação” e “desencriptação”, e três opções de criptografia (MD5, SHA e AES) e um
output para mostrar a mensagem encriptada. c) Testes da aplicação: Foram realizados testes
na aplicação com diversos tipos de frases, tanto no modo “encriptação” e “desencriptação”
com as três opções de criptografias propostas. d) Coleta de resultados: afim de demonstrar os
resultados, foi montada uma tabela para comparar como as criptografias se comportam. e) Por
fim foi apresentado uma conclusão e propostas de trabalhos futuros.
LISTA DE FIGURAS

Figura 1 - Exemplo do algoritmo MD5....................................................................................11


Figura 2 - Exemplo do algoritmo RSA.....................................................................................12
Figura 3 - Exemplo do algoritmo AES.....................................................................................13
Figura 4 - Exemplo de chave simétrica.....................................................................................14
Figura 5 - Exemplo de chave assimétrica.................................................................................15
Figura 6 - Diretório de pasta e arquivos....................................................................................18
Figura 7 - Parte do código da tela incial do software...............................................................19
Figura 8 - Tela inicial da aplicação...........................................................................................20
Figura 9 - Teste da aplicação em desenvolvimento..................................................................21
Figura 10 - Código da parte lógica do software........................................................................21
Figura 11 - Teste com o algoritmo MD5..................................................................................22
Figura 12 - Teste com o algoritmo AES...................................................................................23
Figura 13 - Teste com algoritmo SHA......................................................................................24
Figura 14 - Tabela comparativa................................................................................................24
SUMÁRIO

1 INTRODUÇÃO.................................................................................................................6

2 OBJETIVOS......................................................................................................................7

2.1 OBJETIVO GERAL....................................................................................................7

2.2 OBJETIVO ESPECÍFICO...........................................................................................7

3 REFERENCIAL TEÓRICO............................................................................................8

3.1 SEGURANÇA.............................................................................................................8

3.2 CRIPTOGRAFIA.........................................................................................................9

3.2.1 História.................................................................................................................9

3.3 TIPOS DE CRIPTOGRAFIA....................................................................................10

3.3.1 MD5....................................................................................................................10

3.3.2 RSA.....................................................................................................................11

3.3.3 AES.....................................................................................................................12

3.3.4 Chave simétrica.................................................................................................13

3.3.5 Chave assimétrica.............................................................................................14

4 METODOLOGIA............................................................................................................16

4.1 PESQUISA BIBLIOGRÁFICA.................................................................................16

4.2 DESENVOLVIMENTO DA APLICAÇÃO..............................................................16

4.3 SOFTWARES UTILIZADOS...................................................................................16

5 RESULTADOS................................................................................................................18

5.1 AMBIENTE DE TRABALHO..................................................................................18

5.2 PROJETO E IMPLEMENTAÇÃO............................................................................19

5.2.1 A camada “VIEW”...........................................................................................19


5.2.2 A camada “LOGIC”.........................................................................................21

5.3 TESTES......................................................................................................................22

5.3.1 Testes no software.............................................................................................22

5.3.2 Comparativo das criptografias........................................................................24

6 CONCLUSÃO..................................................................................................................25

7 CRONOGRAMA.............................................................................................................26

REFERENCIAS......................................................................................................................27

1 INTRODUÇÃO

A criptografia é algo fundamental nos dias de hoje, qualquer coisa que fazemos, seja
dentro da internet ou fora, a criptografia está envolvida, é importante todo usuário e
programador saber como funciona um algoritmo de encriptação, não em níveis avançados
com todas as equações matemáticas, mas pelo menos o básico da criptografia. Como ela é
utilizada, como ela está envolvida no dia-a-dia, o que está criptografado.

Desde os primórdios que o homem tem sentido a necessidade de guardar os segredos.


Sejam segredos familiares, segredos sentimentais, segredos pessoais, segredos religiosos, ou
segredos militares e governamentais. Tão forte quanto à necessidade nata de espécie humana
de guardar o segredo sobre determinados assuntos é a vontade dos mesmos humanos de
desvendar esses segredos. Seja por dinheiro, poder, vingança, curiosidade, arrogância, ou
qualquer outro sentimento essa tem sido uma batalha que, ao longo dos anos vem sendo
travada entre aqueles que querem guardar segredos e os que querem desvendar esses
segredos. (FRANÇA, 2015).

A cifração de mensagens foi-se tornando um processo cada vez mais sofisticado,


passando pelas maquinas Enigma (MACHIAVELO, 2016) usadas pelo exército alemão
aquando da Segunda Guerra Mundial, até aos nossos dias com as transações eletrônicas na
Internet. Na atual sociedade da informação, em que cada vez mais as pessoas comunicam
através da internet, um meio de comunicação muito exposto, a importância da criptografia é
enorme, só através da cifração das comunicações é que podemos garantir a condencialidade
da informação que queremos transmitir. (LOPES; QUARESMA, 2016).
Mediante aos fatos ocorridos nos últimos anos de ataques DoS, invasões, fraudes entre
outras. Justifica-se uma pesquisa de um trabalho na área de criptografia, a fim de demonstrar a
importância da tal para poder amenizar esses tipos de acontecimentos que vem aumentando a
cada ano.
2 OBJETIVOS

Nos próximos tópicos serão apresentados o objetivo geral e os objetivos específicos.

2.1 OBJETIVO GERAL

Desenvolver uma aplicação computacional, a fim de demonstrar a importâncias da


utilização de criptografias, abordando as principais formas de utilização de segurança em
ambientes corporativos.

2.2 OBJETIVO ESPECÍFICO

 Efetuar uma análise bibliográfica sobre a criptografia;


 Mostrar em prática alguns algoritmos de criptografia como SHA, MD5 e AES;
 Utilizar as linguagens C/C++ para o desenvolvimento de uma aplicação que demonstra
como a criptografia é utilizada em mensagens.
 Testar a aplicação desenvolvida junto com um público de testes e também
disponibilizar a ferramenta em algum site de compartilhamento, i.e: GitHub.
 Promover a divulgação da experiência e resultados obtidos em eventos técnicos e
científicos, publicações correlatas, e participar do Congresso Anual de Iniciação
Científica e Desenvolvimento Tecnológico e Inovação da USC.
3 REFERENCIAL TEÓRICO

Abaixo serão discutidos os referenciais teóricos sobre os assuntos de segurança,


perícia forense, criptografia e os tipos de criptografias.

3.1 SEGURANÇA

A dependência cada vez maior da tecnologia de informação (TI) torna o software


seguro um elemento chave para a continuidade dos serviços de nossa sociedade atual. Nos
últimos anos, instituições públicas e privadas aumentaram seus investimentos em segurança
da informação, mas a quantidade de ataques vem crescendo mais rapidamente do que a nossa
capacidade de poder os enfrentar, colocando em risco a propriedade intelectual, a relação de
confiança de clientes e a operação de serviços e negócios apoiados pelos serviços de TI.
(BATISTA, 2016).

Garantir a segurança da informação em ambiente digital constitui, cada vez mais, uma
preocupação à escala mundial, seja por parte de organismos públicos, privados, universidades,
empresas e até pelos cidadãos, de forma individual ou coletiva. Na realidade, os riscos e
ameaças não conhecem fronteiras de natureza geográfica, linguística, política ou qualquer
outro tipo de barreiras. O que se verifica é que da mesma forma que aumenta a quantidade de
informação em formato digital disponível, nomeadamente na Internet, também se verifica um
aumento contínuo das ameaças e dos ataques à segurança da informação digital, levando
também a um crescimento das estratégias de promoção da segurança e redução do risco.
(PEREIRA, 2005).

O uso cada vez amplo e disseminado de sistemas informatizados para a realização das
mais diversas atividades, com a integração destes sistemas e de suas bases de dados por meio
de redes, é um fato determinante da sociedade da informação. Contudo, este universo de
conteúdos e continentes digitais está sujeito a várias formas de ameaças, físicas ou virtuais,
que comprometem seriamente a segurança das pessoas e das informações a elas atinentes,
bem como das transações que envolvem o complexo usuário-sistema-informação. A
tecnologia da informação é capaz de apresentar parte da solução a este problema, não sendo,
contudo, capaz de resolvê-lo integralmente, e até mesmo contribuindo, em alguns casos, para
agravá-lo. Nos ambientes organizacionais, a prática voltada à preservação da segurança é
orientada pelas chamadas políticas de segurança da informação, que devem abranger de forma
adequada as mais variadas áreas do contexto organizacional, perpassando os recursos
computacionais e de infraestrutura e logística, além dos recursos humanos. (MARCIANO,
2016).

3.2 CRIPTOGRAFIA

Segundo Schneier (1996), o processo de transformar a mensagem de texto puro em


uma mensagem com texto de conteúdo oculto é chamado de Encriptar ou Cifrar. A
mensagem encriptada é denominada ciphertext ou criptografada. O processo de tornar a
mensagem encriptada em texto puro novamente é denominado decriptografar ou decifrar.
(LARROSA, 2016).

O surgimento da criptografia (do Grego: kryptos, oculto + graph, r. de graphein,


escrever) deve ter sido quase que simultâneo com o da escrita. Os Espartanos, em 400 a.C.,
desenvolveram um sistema muito curioso, num bastão enrolava-se uma tira de couro, após
isso escrevia-se a mensagem em uma tira de couro, o ato de desenrolar a tira do bastão cifrava
a mensagem, a qual só podia ser decifrada tornando a enrolar a tira num bastão de diâmetro
semelhante.

Em contraponto com este método puramente mecânico a cifra de Júlio César


implicava um algoritmo de cifração. Um sistema criptográfico é então um conjunto de
técnicas que nos permitem tornar incompreensível uma dada mensagem, de modo que só o
verdadeiro destinatário da mesma a consiga decifrar, obtendo dessa forma o texto original.
(LOPES; QUARESMA, 2016).

3.2.1 História
Desenvolvida por Arthur Scherbius em 1918, a Enigma levantou um grande interesse
por parte da marinha de guerra alemã em 1926, quando passou a ser usado como seu principal
meio de comunicação e ficaram conhecidas como Funkschlüssel C. Em 1928, o exército
elaborou sua própria versão, a Enigma G, e passou a ser usado por todo o exército alemão,
tendo suas chaves trocadas mensalmente.

A máquina era elétrico-mecânica e funcionava com rotores (primeiramente com 3 e


depois com até 8 rotores). Ao pressionar uma tecla, o rotor mais da esquerda avançava uma
posição, o que ocasionava a rotação dos outros rotores da direita. Esse movimento contínuo
dos rotores ocasionava em diferentes combinações na encriptação.

A codificação de uma mensagem criptografada pela Enigma era considerada


impossível na época (já que para tal, seria necessária uma alta força bruta computacional). A
título de curiosidade, os aliados só conseguiram decifrar os códigos da Enigma graças ao
roubo de uma dessas máquinas, e que com graças à engenharia reversa, foram construídas
máquinas capazes de ler e codificar os códigos alemães, os Colossus. A Enigma acabou por
gerar diversos descendentes, tais como a Typex, a SIGABA e a M-134-C, que apesar de
serem semelhantes à Enigma em seus princípios básicos, eram muito mais seguras.

A criptografia passou a ser usada em larga escala por todas as ações, principalmente
em épocas de guerra, tal como durante a Guerra Fria, onde Estados Unidos e União Soviética
usaram esses métodos a fim de esconder do inimigo suas ações e movimentações,
criptografando-as e impedindo que outros que não possuíssem a chave pudessem ler,
forçando-os a usar diversos métodos para quebrar os códigos de criptografia.

Depois disso surgiram diversos tipos de criptografia, tais como a pôr chave simétrica,
por chave assimétrica e por hash (podemos citar ainda a criptografia quântica, que ainda está
em fase de testes). (CASTELLÓ; VAZ, 2016).

3.3 TIPOS DE CRIPTOGRAFIA

Nas seções a seguir serão apresentados e referenciados os tipos de criptografias.


3.3.1 MD5

O algoritmo MD5 é uma extensão do algoritmo MD4. O MD5 é ligeiramente mais


lento que o MD4, porém é mais conservador no seu design. O MD5 foi projetado porque se
considerou que o MD4 foi talvez adotado para uso de forma mais rápida. O MD4 foi
projetado para ser excepcionalmente rápido, e ele é “na borda” em termos de risco de ataques
de criptoanálise. MD5 recusa um pouco, dando um pouco de velocidade para uma maior
probabilidade de segurança no final. O MD5 incorpora algumas sugestões feitas por vários
usuários, e contém otimizações adicionais. O algoritmo MD5 está sendo colocado em
domínio público para revisão e eventual aprovação como padrão. (SILVA, 2016).

Como pode ser visto na Figura 1, é demonstrado o funcionamento do algoritmo MD5.

Figura 1 - Exemplo do algoritmo MD5

Fonte: BROOKE (2016).


3.3.2 RSA

Criado em 1977 por Ron Rivest, Adi Shamir e Len Adleman, é um dos algoritmos de
chave assimétrica mais utilizados. Seu funcionamento consiste na multiplicação de 2 números
primos muito grandes para a geração de um terceiro número. Para quebrar essa criptografia,
seria necessário a fatoração desse número para encontrar os 2 números primos que o geraram,
porém, para isso é necessário um poder muito alto de processamento, o que acaba
inviabilizando a tarefa. A chave privada são os dois números primos e a pública é o terceiro
número.

Dentre dos métodos criptográficos de chave pública, o RSA é o mais conhecido e,


atualmente, o mais usado, sobre todo em aplicações comerciais. Este sistema de criptografia é
muito útil para o comercio eletrônico via Internet, assim como para navegar nela, através do
Netscape.

O RSA, por ser um método de chave pública, permite que qualquer usuário codifique
mensagens, mas como a chave de decodificação é secreta, só o destinatário legítimo poderá
decodificá-la. A impossibilidade de quebrar a chave de decodificação é possível pela não
existência de algoritmos eficientes para a fatoração de inteiros em fatores primos, sobre todo,
se o número de algarismos é 100 ou maior. O tempo de codificação de uma mensagem é
praticamente desprezível, mas o tempo de decodificação pode tornar o processo inviável.
(SILVA, 2016).

Como pode ser visto na Figura 2, é demonstrado o exemplo do funcionamento do


algoritmo de encriptação RSA.

Figura 2 - Exemplo do algoritmo RSA


Fonte: BILLATNAPIER (2016).

3.3.3 AES

O Advanced Encryption Standard (AES) é uma cifra de bloco, anunciado pelo


National Institute of Standards and Technology (NIST) em 2003, fruto de concurso para
escolha de um novo algoritmo de chave simétrica para proteger informações do governo
federal, sendo adotado como padrão pelo governo dos Estados Unidos, é um dos algoritmos
mais populares, desde 2006, usado para criptografia de chave simétrica, sendo considerado
como o padrão substituto do DES. O AES tem um tamanho de bloco fixo em 128 bits e uma
chave com tamanho de 128, 192 ou 256 bits, ele é rápido tanto em software quanto em
hardware, é relativamente fácil de executar e requer pouca memória. (OLIVEIRA, 2012).

Como pode ser observado na Figura 3, é demonstrado exemplo de funcionamento do


algoritmo da criptografia AES.
Figura 3 - Exemplo do algoritmo AES
Fonte: EBERMANN (2016).

3.3.4 Chave simétrica

A criptografia simétrica é a forma mais comum de criptografia e a de mais simples


entendimento. Os dados a serem protegidos são alimentados a um algoritmo que recebe uma
chave secreta e fornece como saída o dado criptografado, ou seja, modificado e aparentemente
sem sentido. A informação é então transmitida ao receptor (ou armazenada para uso
posterior). Para obter os dados originais, a informação criptografada é alimentada a um
algoritmo que realiza um procedimento inverso e, se fornecida a mesma chave secreta, tem
como saída os dados originais.

O fato marcante da criptografia simétrica, e origem de seu nome, é o uso da mesma


chave secreta (ou de chaves trivialmente relacionáveis) para codificação e decodificação. Para
um envio criptografado bem-sucedido, a chave deve ser acordada previamente entre o emissor
e o receptor. Surge então o grande problema, que não possui fácil solução: a transmissão da
chave. Caso esta transmissão não seja segura o bastante, a segurança de toda a criptografia do
dado principal fica abalada.
Por ser mais intuitiva, a criptografia simétrica era a única forma conhecida até meados
da década de 1970. Ela possui vantagens que ainda a fazem ser utilizada até hoje, como a
velocidade na codificação e decodificação. Ela também é vantajosa quando a troca de chaves
secretas não é um problema, como no armazenamento local de arquivos criptografados.
Exemplos de algoritmos de criptografia simétrica são o AES (Advanced Encryption
Standard), Blowfish e RC4. (FRANCESE, 2016).

Como pode ser observado na Figura 4, um exemplo do funcionamento das chaves


simétricas.

Figura 4 - Exemplo de chave simétrica

Fonte: IBM (2016).

3.3.5 Chave assimétrica

A criptografia assimétrica ou criptografia de chave pública, cujo desenvolvimento teve


início em 1976, tem como principal vantagem aquele que era o ponto fraco da criptografia
simétrica: as chaves de codificação e decodificação são diferentes, eliminando o problema da
comunicação. Os algoritmos usados no processo de criptografia são relacionados, porém um é
de resolução muito mais fácil que o outro (chamados funções de mão única) – a chave
original, chamada de chave privada, pode dar origem à chave que é divulgada, chamada de
chave pública, mas o inverso não é possível em tempo hábil.

Os algoritmos de criptografia assimétrica são em geral baseados em problemas de


difícil solução, como curvas elípticas, logaritmos discretos e fatoração de números primos.
São exemplos de técnicas de criptografia assimétrica o protocolo Diffie-Hellman de troca de
chaves, o algoritmo RSA e o padrão DSA (Digital Signature Algorithm).

Uma das grandes desvantagens da criptografia assimétrica é o custo computacional


dos algoritmos, muito mais lentos que os da criptografia simétrica, mesmo se implementados
em hardware. Por esta razão as transmissões frequentemente iniciam-se com o envio de uma
chave secreta através de criptografia assimétrica, e os dados propriamente ditos – em muito
maior quantidade – são enviados codificados com criptografia simétrica. (FRANCESE, 2016).

Como pode ser visto na Figura 5, é demonstrado um exemplo do funcionamento das


chaves assimétricas.

Figura 5 - Exemplo de chave assimétrica

Fonte: SSL2BUY (2016).


4 METODOLOGIA

Uma pesquisa exploratória ajuda o pesquisador, a saber, quais das várias opções se
aplicam ao problema de pesquisa. Além disso, poderá também auxiliar a estabelecer as
prioridades a pesquisar. As prioridades poderão ser estabelecidas porque uma particular
hipótese explicativa surgida durante a pesquisa exploratória parecerá mais promissora do que
outras. Além do mais, a pesquisa exploratória poderá gerar informações sobre as
possibilidades práticas da condução de pesquisas específicas. (MATTAR, 2015).

Assim sendo, este projeto inicialmente foi uma pesquisa exploratória, que buscou
estudar os termos-chave que norteiam a proposta desta pesquisa. Em seguida foram estudados
materiais teóricos de diversos assuntos, os quais estão relacionados com o escopo do trabalho,
envolvendo áreas como: Linguagem de Programação C++, Criptografia e a utilização de
bibliotecas como: wxWidgets e cryptopp.

4.1 PESQUISA BIBLIOGRÁFICA

A pesquisa bibliográfica deu início com alguns artigos científicos sobre o assunto.
Parte da pesquisa também foi feita através de sites na internet, mas a maior parte da pesquisa
consiste em artigos científicos.

4.2 DESENVOLVIMENTO DA APLICAÇÃO

O objetivo dessa pesquisa é desenvolver uma aplicação computacional, a fim de


demonstrar a importâncias da utilização de criptografias, e a aplicação foi desenvolvida
utilizando a linguagem de programação C++, juntamente com as bibliotecas wxWidgets e
cryptopp. A plataforma de desenvolvimento foi desenvolvida em Linux.
4.3 SOFTWARES UTILIZADOS

Os softwares utilizados nesse projeto foram: Emacs, Git e duas bibliotecas externas
que não são padrões da linguagem C++, sendo elas wxWidgets e cryptopp.

Emacs1 é um editor de texto extensível, personalizável. Na sua essência é um


interpretador para o Emacs Lisp, um dialeto da linguagem de programação Lisp com
extensões para apoiar a edição de texto.

Git2 é um sistema de controle distribuído gratuito e de código aberto projetado para


lidar com tudo, desde pequenas a grandes projetos com velocidade e eficiência.

O wxWidgets é uma biblioteca C ++ que permite aos desenvolvedores criar aplicações


para Windows, Mac OS X, Linux e outras plataformas com uma única base de código. Ele
tem ligações com linguagens populares para Python, Perl, Ruby e muitas outras línguas, e ao
contrário de outros kits de ferramentas multi-plataforma, wxWidgets dá aplicações um olhar
verdadeiramente nativo e sentir porque ele usa a API nativa da plataforma ao invés de emular
a GUI. Também é grande, livre, de código aberto e maduro.

A biblioteca cryptopp3 ou cryptop++, foi utilizada para fazer a parte de criptografia no


projeto. Essa biblioteca contém vários tipos de criptografia, no projeto só foram usados três
tipos, mas a biblioteca em si contém desde os mais “fracos” dos algoritmos até os mais
complexos e robustos.

1 Emacs. Editor de texto. Disponível em: <https://www.gnu.org/software/emacs/>

2 GIT. Programa de versionamento. Disponível em: <https://git-scm.com/>

3 CRYPTOPP. Biblioteca de criptografia. Disponível em: <https://www.cryptopp.com/>


5 RESULTADOS

O objetivo desse projeto é demonstrar como a criptografia aplicada e a teoria funciona,


para a demonstração prática, foi então desenvolvido uma aplicação que visa mostrar como as
mensagens que são enviadas são criptografadas. Tendo como conteúdo de aprendizagem –
conceitos básicos de criptografia (teoria e prática) eprogramação.

5.1 AMBIENTE DE TRABALHO

Conforme pode ser visto na Figura 6, é demonstrado a estrutura do diretório de


trabalho do software.

Figura 6 - Diretório de pasta e arquivos

Fonte: Elaborado pelo autor.

No diretório principal existem os seguintes arquivos:


 .gitignore: Como citado anteriormente, o projeto está sendo hospedado no site de
compartilhamento GitHub. O gitignore é um arquivo de texto que permite excluir
certos arquivos de irem para o repositório do GitHub, como: executáveis e logs.
 build.sh: Como o desenvolvimento foi iniciado na plataforma Linux, foi criado um
arquivo shell para ajudar na compilação e debug do software.
 cryptoIC: Executável do software.
 LICENSE: A licença que é usada pelo software, atualmente a licença que é usada é a
do MIT.
 Makefile: O Makefile é o arquivo que cuida da parte de compilação do projeto. Ele é
usado para pode gerar o executável e os símbolos de debugger.
 README.md: No README é explicado o funcionamento do projeto, e como é
possível utiliza-lo.

Já a pasta “src” é dívida em duas subpastas, a primeira é a “logic” aonde estão os


arquivos da lógica do software, como por exemplo os algoritmos para encriptação e
desencriptação. E a segunda a pasta “view”, estão contidos todos os arquivos que cuidam do
design do software.

5.2 PROJETO E IMPLEMENTAÇÃO

Criados o ambiente de trabalho e seus arquivos, o próximo passo foi a implementação


dos códigos em suas devidas linguagens de programação. Foram implementados na seguinte
ordem: a camada de “view”, a camada “logic”.

5.2.1 A camada “VIEW”

A camada de “view” cuida de toda parte gráfica do software, o primeiro arquivo que é
executado dessa camada é o “window.cpp”, aqui será criado a janela principal do software.
Figura 7 - Parte do código da tela incial do software

Fonte: Elaborado pelo autor.

Como pode ser visto na Figura 7, ele necessita de mais dois arquivos para poder criar a
janela principal. O “window.h” e o “windowFrame.h”. O arquivo “window.h” contém apenas
um único método (OnInit) utilizado para criar a janela do software.

Após ser criado a janela o próximo arquivo que é executado é o “windowFrame.cpp”,


nele contém todas as definições de objetos que serão adicionados a essa tela inicial do
software.

Após todos os componentes serem compilado e carregados, a tela inicial do software


desenvolvido é representado conforme a Figura 8.

Figura 8 - Tela inicial da aplicação


Fonte: Elaborado pelo autor.

Percebe-se que na Figura 8 a tela inicial, os botões “Lock” e “Carregar um arquivo”, o


campo “Lock” serve para travar o campo de input do usuário e seguir para a próxima etapa
que é selecionar entre “encriptar” ou “desencriptar” e subsequentemente o tipo de criptografia
que será usada. É possível observar ainda na tela inicial o botão “Crypto!”, que quando o
usuário acionar esse botão é disparado um evento e então ele chama o método de encriptação
ou desencriptação de acordo com o tipo de criptografia escolhido.

Já na Figura 9 percebe-se o resultado gerado a partir da mensagem “Testando”. Nesse


teste da ferramenta foi escolhido a opção de “Encriptação” e a criptografia MD5, após ter
clicado no botão “Crypto!”, uma hash foi gerada como output assim como a mensagem
original foi exibida.

E por fim, o botão “Salvar” e “Sair”, o botão “Salvar” irá salvar o conteúdo gerado
como output e grava um arquivo de texto em uma pasta de escolha do usuário, já o botão sair
tem a funcionalidade de fechar da aplicação.
Figura 9 - Teste da aplicação em desenvolvimento

Fonte: Elaborado pelo autor.

5.2.2 A camada “LOGIC”

A camada “logic” contém as implementações lógicas do algoritmo de criptografia,


como foi mostrado, a camada “logic” contém os arquivos “cryptography.cpp” e
“cryptography.h” (Figura 10).

No arquivo “cryptography.h” está contido toda a descrição dos métodos usados para
encriptar as mensagens, já o arquivo “cryptography.cpp” está contida toda a implementação
dos métodos descritos no “cryptography.h”.

Figura 10 - Código da parte lógica do software


Fonte: Elaborado pelo autor.
5.3 TESTES

Para testar o software foi disponibilizado em um site de compartilhamento, GitHub,


deixando a disposição o software para o uso de qualquer usuário. Para registrar os erros,
dúvidas e qualquer outro tipo de comentário. Existe uma página destinada somente para isso
no projeto, essa página é chamada de “issues” onde qualquer um que use o software pode ir lá
e reportar o que quiserem.

5.3.1 Testes no software

Foi realizado uma série de testes com a finalidade de comparar os resultados gerados e
obtidos através do software desenvolvido.

Os testes foram realizados com os algoritmos disponíveis no software, sendo esses


MD5, AES e SHA. Abaixo pode-se ver o resultado de cada algoritmo encriptando a mesma
mensagem.
O primeiro teste realizado foi com o algoritmo de cifragem MD5, no teste foi digitado
a frase “testando o software” e cifrando ela com o algoritmo MD5, e o resultado pode ser
visualizado no campo Output string da Figura 11.

Figura 11 - Teste com o algoritmo MD5

Fonte: Elaborado pelo autor.

O segundo teste, foi realizado com o algoritmo AES, onde foi utilizado a mesma
mensagem “testando o software”, e cifrando ela utilizando um codificador de base64 e o
tamanho da chave é 16bytes. O AES pode utilizar outros tamanhos para cifrar as mensagens,
como por exemplo: 16, 24 ou 32 bytes. O resultado pode ser visto no campo Output string da
Figura 12.

Figura 12 - Teste com o algoritmo AES


Fonte: Elaborado pelo autor.

Já o último teste, foi realizado com o algoritmo de cifragem SHA. Esse algoritmo está
cifrando a mensagem a mesma mensagem “testando o software” em quatro formas diferentes.
SHA1, SHA224, SHA256 e SHA512, pois são os tipos que o software encripta as mensagens
colocadas pelo usuário. O resultados podem ser visto no campo Output string da Figura 13.
Figura 13 - Teste com algoritmo SHA

Fonte: Elaborado pelo autor.

5.3.2 Comparativo das criptografias

A fim de comparar os resultados obtidos pelo software, foi montada uma tabela para
ter uma visão geral dos resultados obtidos por cada tipo de criptografia. Na Figura 14 está
sendo apresentado o resultado da frase “testando o software” nas criptografias SHA1,
SHA224, SHA256, SHA512, AES e MD5.
Tip Resultado
o

SH F1BDD672EDA0DC626C8E294392CB3B0DED194304
A1

SH 19407AD9AB3894244CF9A87D41AE0D81EB7AE5177713C57043C984B8
A22
4

SH C24660DB1BB7D02C9217D52A3CD28D0FA4E2FBFD1C777C69969C289BD3DE3AAB
A25
6

SH 66E2D12FD5FB2EC949CB950719CC65015C07A075AEAC2470E66DD1F54EB6CD0501C86540F44FD6E
A51 833E7C288498EE066710AEE82808B89E8498A4F7C9B6A5DFB
2

AE x2aRmGaTvrMkYEdJ6Q0E7Ymqxx0MhrmWFX6swVK1lo8=
S

MD 44699E00F52DF02B75CB6539AC861550
5
6 CONCLUSÃO

A criptografia é uma área extremamente importante para segurança digital, sem ela
nossos dados pessoais seriam expostos na internet facilmente e isso poderia gerar problemas
gravíssimos. Como por exemplo um banco que não tem um sistema de proteção para guardar
suas informações, que não implementa algoritmos de criptografia robustos e seguros em seus
sistemas. Esses bancos sofreriam invasões frequentemente de pessoas maliciosas. Assim, é
extremamente importante o estudo da criptografia em sistemas de informações, para que todas
as informações privadas seguras, fiquem longe de pessoas mal-intencionadas.

Mediante a criação do software para esta pesquisa, foi possível demonstrar a diferença
dos tipos de criptografias SHA1, SHA224, SHA256, SHA512, AES e MD5. A interface do
software foi projetada para ser simples e com fácil usabilidade.
Como pode ser notado nesse traabalho, existem vários algoritmos de criptografia
diferentes. Existem algoritmos com um foco em velocidade (velocidade de encriptação), já
outros algoritmos que tendem a ser um pouco mais lentos, porém mais seguros (utilizam de
melhores técnicas para garantir a segurança). Visando todos os algoritmos disponíveis
atualmente, basta escolher aquele que vai se encaixar melhor diante do sistema que está sendo
usado.

Vale ressaltar que o software foi desenvolvido apenas para o estudo das criptografias e
como trabalhos futuros poderia ser estendida a sua utilidade para encriptar arquivos e
diretórios. Mas o foco principal desse software é o entendimento de como a criptografia pode
ser utilizada. Concluindo assim o objetivo proposto desta pesquisa onde o intuito era
demonstrar a importância da utilização de criptografias abordando as principais formas de
utilização de segurança em ambientes corporativos.
7 CRONOGRAMA

ETAPAS MÊS DE EXECUÇÃO

1 2 3 4 5 6 7 8 9 10 11 12

Levantamento Bibliográfico:
Fichamento de Livros, Artigos,
Vídeos, Pesquisas Internet etc.

Coleta de dados / analise dos dados


coletados

Estudo das linguagens C/C++ e dos


ambientes de desenvolvimento

Implementação das linguagens C/C+


+ / Criação das aplicações de
segurança.

Teste com o público de testes e


profissionais da área / Escrita dos
testes e relatório.

Considerações finais do projeto de


pesquisa, revisão e entrega.
REFERENCIAS

AGRAWAL, N; KUMAR, M; RIZVI, M.A. Transposition Cryptography Algorithm Using


Tree Data Structure. Disponível em:
<https://www.researchgate.net/profile/Nikhil_Agrawal14/publications>. Acesso em: 10 nov.
2015.

ANAND, D; KHEMCHANDANI, V; SHARMA, K., R. Identity-Based Cryptography


Techniques And Applications (A Review).
<http://www.joconline.com.cn/CN/article/openArticlePDFabs.jsp?id=156477>. Acesso em:
10 nov. 2015.

BATISTA, C. F. A. Métricas de Segurança de Software. Disponível em:


<http://www.maxwell.vrac.puc-rio.br/10990/10990_1.PDF>. Acesso em: 16 jun. 2016.

BILLATNAPIER. EXEMPLO DO ALGORITMO RSA. Disponível em:


<http://billatnapier.com/design_tips241.htm>. Acesso em: 19 de jun de 2016.

BROOKE, T. Exemplo do Algoritmo MD5. Disponível em:


<http://www.makeuseof.com/tag/md5-hash-stuff-means-technology-explained/>. Acesso em:
19 de jun de 2016.

CASTELLÓ, T; VAZ, V. História da Criptografia. Disponível em:


<http://www.gta.ufrj.br/grad/07_1/ass-dig/HistriadaCriptografia.html>. Acesso: em 16 jun.
2016.

CERT. Site do Cert para verificar as estatísticas sobre as invasões, ataques e etc. Disponível
em: <http://www.cert.br/stats/incidentes/2013-jan-dec/tipos-ataque-acumulado.html>. Acesso
em: 10 nov. 2015.

CHATTERJEE, D; NATH, J; DASGUPTA, S; NATH, A. A New Symmetric Key


Cryptography Algorithm Using Extended Msa Method: Djsa Symmetric Key Algorithm.
Disponível em: <http://ieeexplore.ieee.org/xpl/abstractAuthors.jsp?
reload=true&arnumber=5966411>. Acesso em: 10 nov. 2015.
EBERMANN P. EXEMPLO DO ALGORITMO AES. Disponível em:
<http://crypto.stackexchange.com/questions/2711/does-the-mixcolumns-step-come-before-or-
after-addroundkey-in-aes-decryption>. Acesso em: 19 de jun de 2016.

FRANÇA, W. B. A. Criptografia. Disponível em: <>. Acesso em: 10 nov. 2015.

FRANCESE, J. P. S. Criptografia Quântica, 2008. Disponível em: <


http://docs.google.com/viewer?a=v&q=cache:sBKmLdNBKkMJ:www.gta.ufrj.br/grad/
08_1/quantica/dw/Criptografia%2520Quantica%2520(Joao%2520Pedro%2520Franc
ese).doc+Criptografia+Qu
%C3%A2ntica+francese&hl=ptBR&gl=br&pid=bl&srcid=ADGEESiE06OHzV4jYhL4v3Rm
4peceDNmBxbIPSBP0In4_
i7QrIoDJXiq1xbRrBpAVERDe2wNmDjT7v47nbqLr7CjGYDyED2dADjc7uTZUqXvoH9O
Pf4dFKvn_6MutghmrMGYYeaRq6S&sig=AHIEtbSQQD0RELjkTyciz5lp_ohytAlBw >.
Acesso em: 16 jun. 2016.

IBM. EXEMPLO DE CHAVE SIMÉTRICA. Disponível em:


<http://www.ibm.com/support/knowledgecenter/SSFKSJ_9.0.0/com.ibm.mq.sec.doc/
q009800_.htm>. Acesso em: 19 de jun de 2016.

JAILIN, S; KAYALVIZHI, R; VAIDEHI, V. Performance Analysis of Hybrid Cryptography


for Secured Data Aggregation in Wireless Sensor Networks. Disponível em:
<http://ieeexplore.ieee.org/xpl/articleDetails.jsp%3Freload%3Dtrue%26arnumber
%3D5972447>. Acesso em: 10 nov. 2015.

KUMAR, C; DUTTA, S; CHAKBORTY, S. Musical Cryptography Using Genetic


Algorithm. Disponível em: <https://scholar.google.co.in/citations?
user=8eGGd4YAAAAJ&hl=en>. Acesso em: 10 nov. 2015.

KUMAR, N; AGRAWAL, S. An Efficient and Effective Lossless Symmetric Key


Cryptography Algorithm for an Image. Disponível em:
<http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=7012788&url=http%3A%2F
%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D7012788>. Acesso em:
10/11/2015.
LARROSA, O. A. G; et. al. A Influência e Importância da Criptografia na Velocidade de
Rede Ethernet. Disponível em: <http://web.unipar.br/~seinpar/2013/artigos/Otavio
%20Augusto%20Goncalves%20Larrosa.pdf>. Acesso em: 16 fev. 2016.

LOPES, E; QUARESMA, P.. Criptografia. Disponível em:


<http://www.mat.uc.pt/~pedro/lectivos/CodigosCriptografia1011/artigo-gazeta08.pdf>.
Acesso em: 19 mar. 2016.

MACHIAVELO, A. O Que Vem à Rede. Disponível em: <http://gazeta.spm.pt/pesquisa?


campopesquisa=Ant%C3%B3nio%20Machiavelo&campo=autr.nome>. Acesso em: 19 mar.
2016.

MARCIANO, J. L; LIMA-MARQUES, MAMEDE. O Enfoque Social da Segurança Da


Informação. Disponível em: <http://www.scielo.br/pdf/ci/v35n3/v35n3a09.pdf> Acesso em:
16 jun. 2016.

MATTAR, F. N. Pesquisa de Marketing. Disponível em:


<http://www.elsevier.com.br/site/institucional/Minha-pagina-autor.aspx?aid=76424&seg=6>.
Acesso em: 10 nov. 2015.

OLIVEIRA, R. R. Criptografia Simétrica E Assimétrica: Os Principais Algoritmos De


Cifragem. Disponível em:
<http://www.ronielton.eti.br/publicacoes/artigorevistasegurancadigital2012.pdf>. Acesso em:
16 jun. 2016.

PEREIRA, P. J. F. Segurança da informação digital. Cadernos BAD. Associação Portuguesa


de Bibliotecários Arquivistas e Documentalistas. 2005.

RIVEST, R. L. Descrição do algoritmo de criptografia MD5. Disponível em:


<https://tools.ietf.org/html/rfc1321>. Acesso em: 16 jun. 2016.

SILVA, E. V. P. Introdução a Criptografia RSA. Disponível em:


<http://www.impa.br/opencms/pt/eventos/downloads/jornadas_2006/trabalhos/
jornadas_elen_pereira.pdf>. Acesso em: 19 de jun de 2016.

SOORTA, R; MADHURI, K; VUDAYAGIRI, A. Hardware Random Number Generator for


Cryptography. Disponível em: <http://arxiv.org/abs/1510.01234>. Acesso em: 10 nov. 2015.
SSL2BUY. EXEMPLO DE CHAVE ASSIMÉTRICA. Disponível em:
<https://www.ssl2buy.com/wiki/symmetric-vs-asymmetric-encryption-what-are-differences/
>. Acesso em: 19 de jun de 2016.

VIGNESH SAKTHI, R; SUDHARSSUN, S; KUMAR JEGADISH, K.J. Limitations of


Quantum & the Versatility of Classical Cryptography: A Comparative Study. Disponível em:
<http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=5383498&url=http%3A%2F
%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D5383498>. Acesso em: 10
nov. 2015.

WXWIDGETS. Biblioteca usada para criar a interface da aplicação. Disponível em:


<http://wxwidgets.org/> Acesso em: 10 nov. 2015.

ZHOU, P; DING, Q. The Key Exchange Research of Chaotic Encryption Chip Based on
Elliptic Curve Cryptography Algorithm. Disponível em:
<http://ieeexplore.ieee.org/xpl/abstractAuthors.jsp?
reload=true&arnumber=5288393&contentType=Conference+Publications >. Acesso em: 10
nov. 2015.

Você também pode gostar