90
Universidade Federal do Rio Grande do Norte Centro de Ciências Exatas e da Terra Departamento de Informática e Matemática Aplicada Programa de Pós-Graduação em Sistemas e Computação Mestrado Acadêmico em Sistemas e Computação Implementação do Algoritmo Criptográfico Papílio Versátil na Biblioteca OpenSSL Luiz Ranyer de Araújo Lopes Natal-RN Outubro 2019

ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

Universidade Federal do Rio Grande do NorteCentro de Ciências Exatas e da Terra

Departamento de Informática e Matemática AplicadaPrograma de Pós-Graduação em Sistemas e Computação

Mestrado Acadêmico em Sistemas e Computação

Implementação do Algoritmo CriptográficoPapílio Versátil na Biblioteca OpenSSL

Luiz Ranyer de Araújo Lopes

Natal-RN

Outubro 2019

Page 2: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

Luiz Ranyer de Araújo Lopes

Implementação do Algoritmo Criptográfico PapílioVersátil na Biblioteca OpenSSL

Dissertação de Mestrado apresentada ao Pro-grama de Pós-Graduação em Sistemas eComputação do Departamento de Informá-tica e Matemática Aplicada da UniversidadeFederal do Rio Grande do Norte como re-quisito parcial para a obtenção do grau deMestre em Sistemas e Computação.

Linha de pesquisa:Teoria da Computação

Orientador

Prof. Dr. Benjamín René Callejas Bedregal

Coorientador

Prof. Dr. Isaac de Lima Oliveira Filho

PPgSC – Programa de Pós-Graduação em Sistemas e ComputaçãoDIMAp – Departamento de Informática e Matemática Aplicada

CCET – Centro de Ciências Exatas e da TerraUFRN – Universidade Federal do Rio Grande do Norte

Natal-RN

Outubro 2019

Page 3: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

Lopes, Luiz Ranyer de Araújo. Implementação do algoritmo criptográfico Papílio Versátil nabiblioteca OpenSSL / Luiz Ranyer de Araújo Lopes. - 2019. 88f.: il.

Dissertação (mestrado) - Universidade Federal do Rio Grandedo Norte, Centro de Ciências Exatas da Terra. Departamento deInformática e Matemática Aplicada, Programa de Pós-Graduação emSistemas e Computação. Natal, 2019. Orientador: Benjamín René Callejas Bedregal. Coorientador: Isaac de Lima Oliveira Filho.

1. Computação - Dissertação. 2. Segurança da informação -Dissertação. 3. Criptografia - Dissertação. 4. OpenSSL -Dissertação. I. Bedregal, Benjamín René Callejas. II. OliveiraFilho, Isaac de Lima. III. Título.

RN/UF/CCET CDU 004

Universidade Federal do Rio Grande do Norte - UFRNSistema de Bibliotecas - SISBI

Catalogação de Publicação na Fonte. UFRN - Biblioteca Setorial Prof. Ronaldo Xavier de Arruda - CCET

Elaborado por Joseneide Ferreira Dantas - CRB-15/324

Page 4: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

LUIZ RANYER DE ARAÚJO LOPES

“Implementação do Algoritmo Criptográfico Papílio Versátil na Biblioteca

OpenSSL”

Esta Dissertação foi julgada adequada para a obtenção do título de mestre em

Sistemas e Computação e aprovada em sua forma final pelo Programa de Pós-

Graduação em Sistemas e Computação do Departamento de Informática e Matemática

Aplicada da Universidade Federal do Rio Grande do Norte.

______________________________________________________________________

Presidente: Dr. BENJAMÍN RENÉ CALLEJAS BEDREGAL (Orientador - UFRN)

__________________________________________________________ Profª. Drª. Anne Magaly de Paula Canuto

(Coordenadora do Programa)

Banca Examinadora

______________________________________________________________________ Examinador: Dr. AUGUSTO JOSÉ VENÂNCIO NETO

(UFRN)

______________________________________________________________________ Examinador: Dr. ISAAC DE LIMA OLIVEIRA FILHO

(UERN)

______________________________________________________________________ Examinadora: Dra. KARLA DARLENE NEPOMUCENO RAMOS

(UERN)

Outubro, 2019

Page 5: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

Esse trabalho e dedicado a minha Esposa Liliane Ribeiro da Silva, que sempre me

deu apoio e força para conclusão sendo um exemplo de dedicação e força, acadêmica e

pessoal. Também dedico aos meus Pais e irmãos.

Page 6: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

Agradecimentos

A Deus e todos os Guias de luz, que me protegem e me guardam.

Ao meu Orientador, Prof.Dr. Benjamin Rene Callejas Bedregal, pela oportunidade,

dedicação, paciência e motivação durante todo o processo de elaboração dessa dissertação;

Ao meu coorientador, Prof.Dr. Isaac de Lima Oliveira Filho, que antes de ser meu

coorientador é uma excelente amigo, e por muitas vezes aliviou o peso das incertezas

desta etapa, me encaminhando para a construção desta dissertação;

Ao Prof.Dr. Augusto José Venâncio Neto, que foi um excelente supervisor, me auxi-

liando e apoiando, cedendo um espaço em seu laboratório e muitas vezes me orientando,

em momentos de dúvidas, obrigado sempre, pelas palavras e amizade;

A funpec, pelo apoio parcial na etapa final deste trabalho, que foi de grande ajuda;

A minha esposa Liliane Ribeiro da Silva pelo companheirismo, amor, apoio e força.

Por ser essa mulher forte e determinada, que abriu meus olhos para coisas além do que

eu queria ver, muito obrigado pela paciência e cuidado.

Aos meus pais Regina Maria de Araújo Lopes e Luiz Otávio Vieira Lopes, pela criação

e educação e todo amor que me é proporcionado são meus heróis, aos meus irmãos Luana

Rachel de Araújo Lopes, que sempre foi um exemplo para mim, e Lucas Rafael de Araújo

Lopes que é nosso pacotinho e sobrinho Luiz Otávio Vieira Lopes Neto, que sempre é

felicidade desdo momento em que veio ao mundo. Obrigado por entender minha ausência

em alguns momentos deste período e de todo Amor retribuído, incondicional.

Aos meus amigos de Salvador do grupo “QP” Taís, Marcelo, Carol, Flávio, Bianca,

Adailton, Camila e Cason, amigos de longas caminhadas e conversas.

Meus amigos de Natal do “Hissatsus” que sempre garantiram ótimas risadas e diversão,

e muitos companheiros de profissão, Tainá, Hand, Igor, Camila, Dennel, Gabriel, Prentice,

Guilherme, Matheus e outros vários.

Aos amigos para todas as horas que considero uma família Ronildo Pinheiro e Deuziane

Cruz e ao casal de fofos tem aquele abraço aconchegante André Castro e Elisa Dias.

Page 7: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

Aos amigos do ReginaLab@, os quais tive o prazer em compartilhar vários momentos,

Wanderson, Lucas, Douglas, Alisson, Marcílio, Matheus, Átalo e em especial Ailson e Do-

mingo, que sempre deram apoio necessário e pela forma que procuram ajudar solucionando

problemas que não conseguimos mais ver;

Aos professores do DIMAp pela contribuição na minha formação como aluno e pessoa;

Aos funcionários do DIMAp por facilitarem a minha vida;

Aos parentes Avós, Tios, primos que de alguma forma contribuíram para minha edu-

cação, emanando sempre força positiva;

E a tantos outros que contribuíram de alguma forma na minha vida, por mais que

não tenham sido mencionados aqui, muito obrigado.

Page 8: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

“O essencial é invisível para os olhos”

Saint-Exupéry

Page 9: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

Implementação do Algoritmo Criptográfico PapílioVersátil na Biblioteca OpenSSL

Autor: Luiz Ranyer de Araújo Lopes

Orientador(a): Pro. Dr. Benjamín René Callejas Bedregal

Coorientador(a): Pro. Dr. Isaac de Lima Oliveira Filho

Resumo

Em um mundo globalizado e altamente exposto, a informação é um dos bens mais

valiosos no mundo. Com o crescente aumento das tecnologias de informações e o grande

volume de dispositivos conectados e interligados à internet surge à internet das coisas

(IoT), o que contribui com o crescimento da quantidade de dados transmitidos, com os

ataques cibernéticos passando a pertencer ao cotidiano das empresas e das pessoas. Estes

ataques podem representar riscos diretos aos usuários. Desta forma, existe uma demanda

crescente em manter essas informações livres de riscos e perigos quanto à sua integridade,

à sua autenticidade e à sua confidencialidade.

Nesse sentido, a segurança da informação busca a proteção dessas informações imple-

mentando políticas de segurança e mecanismos de proteção de dados, que devem contem-

plar o adequado equilíbrio dos aspectos humanos e técnicos da segurança da informação.

Sobre os mecanismos de proteção, a criptografia é um dos mais utilizados para a mantê-los

seguros, está diretamente relacionada aos tipos de algoritmos criptográficos, que podem

ser utilizados nos mais diversos contextos. Neste caso, aborda-se o uso de algoritmos

criptográficos inseridos no processo de comunicação entre cliente/servidor via ferramenta

OpenSSL.

Com o intuito de investigar o nível de segurança oferecido pelo OpenSSL, este tra-

balho aborda a integração do algoritmo de criptografia Papílio Versátil ao conjunto de

cifras integradas ao próprio OpenSSL. Além disso, busca-se mensurar o nível de segurança

inerente ao uso do Papílio Versátil dentro do processo de proteção na transmissão de da-

dos entre cliente e servidor. Através de uma avaliação experimental, foi possível validar

Page 10: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

a implementação realizada. Pode-se observar que as requisições realizadas tiveram um

pequeno acréscimo médio em termos de latência, mas esse custo é compensado através da

ampliação da segurança na plataforma.

Palavras-chave: Segurança da Informação , Criptografia, OpenSSL, SSL/TLS.

Page 11: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

Implementing the Versatile Papillary CryptographicAlgorithm in the OpenSSL Library

Author: Luiz Ranyer de Araújo Lopes

Supervisor: Pro. Dr. Benjamín René Callejas Bedregal

Cosupervisor: Pro. Dr. Isaac de Lima Oliveira Filho

Abstract

In a globalized and highly exposed world, information is one of the most valuable assets

in the world. With the increasing increase of information technologies and the large volume

of connected and interconnected devices, internet of things (IoT), which contributes to

the growing amount of transmitted data, cyber attacks have become part of the daily lives

of businesses and people. . These attacks can pose direct risks to users. Thus, there is a

growing demand to keep this information free of risks and dangers regarding its integrity,

authenticity and confidentiality.

In this sense, information security seeks to protect this information by implementing

security policies and data protection mechanisms, which must address the appropriate

balance of human and technical aspects of information security. About the protection

mechanisms, encryption, one of the most used to keep them safe. This protection is directly

related to the types of cryptographic algorithms that can be used in the most diverse

contexts. In this case, we approach the use of cryptographic algorithms inserted in the

process of communication between client / server via OpenSSL tool.

In order to investigate the level of security offered by OpenSSL, this paper addresses

the integration of the Papillium Versatile encryption algorithm to the set of ciphers inte-

grated with OpenSSL itself. In addition, we seek to measure the level of security inherent

in the use of Versatile Papillion, within the process of protection in data transmission

between client and server. Through an experimental evaluation it was possible to validate

the implementation performed. It can be observed that the requests made had a small

average increase in latency, but this cost is offset by the increased security on the platform.

Keywords : Network Security, Cryptography, OpenSSL, SSL/TLS .

Page 12: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

Lista de figuras

1 Incidentes reportados. . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 25

2 Incidentes reportados ano de 2017. . . . . . . . . . . . . . . . . . . . . p. 26

3 Método de criptografar um dado. . . . . . . . . . . . . . . . . . . . . . p. 34

4 Método de decriptação de um dado. . . . . . . . . . . . . . . . . . . . . p. 34

5 Método de criptografia de chave simétrica. . . . . . . . . . . . . . . . . p. 36

6 Método de criptografia de chave assimétrica. . . . . . . . . . . . . . . . p. 38

7 Caminho, através dos sistemas, de Berlim a San José. . . . . . . . . . . p. 41

8 Caminho físico da Califórnia à Alemanha. . . . . . . . . . . . . . . . . p. 42

9 SSL foi desenvolvido juntamente com os primeiros navegadores web. . . p. 43

10 O protocolo considerado como uma nova camada na arquitetura TCP/IP. p. 44

11 Utilização do SSL por outras tecnologias. . . . . . . . . . . . . . . . . . p. 44

12 Estabelecimento de uma conexão segura com SSL. . . . . . . . . . . . . p. 47

13 Representação de um volta do Algoritmo Papílio. . . . . . . . . . . . . p. 52

14 Estrutura do codificador. . . . . . . . . . . . . . . . . . . . . . . . . . . p. 55

15 Papílio (tradicional) x PapílioXP na avalanche. . . . . . . . . . . . . . p. 58

16 Geração de Subchaves no Papílio Versátil. . . . . . . . . . . . . . . . . p. 60

17 Cenário estabelecido para a testes. . . . . . . . . . . . . . . . . . . . . p. 63

18 Servidor ReginaLAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 64

19 Destaque do subdiretório do Papílio. . . . . . . . . . . . . . . . . . . . p. 66

20 Listagem do subdiretório Papílio. . . . . . . . . . . . . . . . . . . . . . p. 66

21 Implementação do arquivo Makefile. . . . . . . . . . . . . . . . . . . . . p. 67

22 Suporte engine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 67

Page 13: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

23 Trecho de código do arquivo e_papilio. . . . . . . . . . . . . . . . . . . p. 68

24 Registro da cifra. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 69

25 Novas ID’s. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 70

26 Implementação na matriz Aliases. . . . . . . . . . . . . . . . . . . . . . p. 70

27 Chamada do Papílio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 71

28 Identificação da biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . p. 71

29 Página web - www.papilio.com.br. . . . . . . . . . . . . . . . . . . . . . p. 72

30 Saída do comando ciphers -v. . . . . . . . . . . . . . . . . . . . . . . . p. 75

31 Arquivo teste no diretório /home/ubuntu do servidor. . . . . . . . . . . p. 76

32 Conteúdo inicial do arquivo. . . . . . . . . . . . . . . . . . . . . . . . . p. 76

33 Arquivo criptografado no diretório. . . . . . . . . . . . . . . . . . . . . p. 77

34 Arquivo teste.txt criptografado. . . . . . . . . . . . . . . . . . . . . . . p. 77

35 Comando speed no openssl para o Papílio. . . . . . . . . . . . . . . . . p. 79

36 Cifras disponíveis para a comunicação Cliente. . . . . . . . . . . . . . . p. 81

37 Cifras disponíveis para a comunicação. . . . . . . . . . . . . . . . . . . p. 82

38 Tabela comparativa das cifras simétricas. . . . . . . . . . . . . . . . . . p. 83

39 Gráficos de comparação das cifras simétricas. . . . . . . . . . . . . . . . p. 84

Page 14: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

Lista de tabelas

1 Principais algoritmos criptográficos simétricos. . . . . . . . . . . . . . . p. 37

2 Principais algoritmos criptográficos assimétricos. . . . . . . . . . . . . . p. 39

3 Exemplo de execução do algoritmo Viterbi Modificado. . . . . . . . . . p. 54

4 Resultado do algoritmo desenvolvido. . . . . . . . . . . . . . . . . . . . p. 56

Page 15: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

Lista de abreviaturas e siglas

HFC – Hybrid Fiber Coax

EAD – Educação a distância

IoT – Internet of Things

SSL – Secure Socket Layer

TLS – Transport Layer Security

CoAP – Constrained Application Protocol

MQTT – Message Queue Telemetry Transport

LWM2M – OMA Lightweight M2M

CERT.br – Centro de Estudos, Resposta e Tratamento de Incidentes de Segurança no

Brasil

Web – World Wide Web

DoS – Denial of Service

SSH – Secure Shell

TCP – Transmission Control Protocol

RDP –Remote Desktop Protocol

FTP – File Transfer Protocol

ADSL – Assymetrical Digital Subscriber Line

IMAP – Internet Message Access Protocol

SMTP – Simple Mail Transfer Protocol

CMS – Content Management System

SO – Sistema Operacional

E-interface – Interface Emulada

Page 16: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

DES – Data Encryption Standard

NIST – National Institute os Standards and Technologies

IBM – International Business Machines

3DES – Triplo Data Encryption Standard

RC2 –Rivest-Shamir-Adleman

IDEA – International Data Encryption Algorithm

AES – Advance Encryption Standard

SHA1 (Secure Hash Algorith,)

MD5 (Message-Digest algorithm 5)

Page 17: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

Sumário

1 Introdução p. 18

1.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 20

1.2 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 21

1.3 Revisão Bibliográfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 22

1.4 Organização do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . p. 24

2 Fundamentação Teórica p. 25

2.1 Riscos à Segurança . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 25

2.2 Segurança da Informação . . . . . . . . . . . . . . . . . . . . . . . . . . p. 29

2.3 Criptografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 31

2.4 OpenSSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 40

2.5 Justificativa para a Necessidade do Protocolo . . . . . . . . . . . . . . . p. 41

2.6 Surgimento do SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 42

2.7 Arquitetura, Propriedades e Funcionamento . . . . . . . . . . . . . . . p. 45

2.8 TLS - O sucessor do SSL . . . . . . . . . . . . . . . . . . . . . . . . . . p. 49

3 Algoritmo Papílio Versátil p. 51

3.1 Papílio Original . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 51

3.2 PapilioXP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 56

3.3 Papílio Versátil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 59

3.4 Criptoanálise Diferencial do Papílio . . . . . . . . . . . . . . . . . . . . p. 60

4 Papílio no OpenSSL p. 62

Page 18: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

4.1 Problemas e Desafios de Segurança Criptográfica . . . . . . . . . . . . . p. 62

4.2 Cenário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 63

4.3 Metodologia do Desenvolvimento . . . . . . . . . . . . . . . . . . . . . p. 64

4.4 Etapas Desenvolvidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 65

5 Experimentos p. 74

5.1 Arquitetura de Desenvolvimento e de Testes . . . . . . . . . . . . . . . p. 74

5.2 Compatibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 74

5.3 Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 78

5.4 Conectividade SSL/TLS . . . . . . . . . . . . . . . . . . . . . . . . . . p. 80

5.5 Comparação de algoritmos de criptografia . . . . . . . . . . . . . . . . p. 82

6 Considerações Finais p. 85

6.1 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 85

6.2 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 86

Referências p. 87

Page 19: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

18

1 Introdução

O tema segurança da informação tem se tornado cada vez mais conhecido, à medida

que as pessoas e organizações mantêm seus dados processados, salvos ou disponíveis no

ambiente computacional, com esses dados estando sempre disponíveis a qualquer momento

de necessidade, para a realização de negociações ou uso pessoal.

Uma das questões mais importantes quando se trata de informação é a segurança,

independentemente dessa informação estar no ambiente de tecnologia ou em ambiente

convencional. A informação é o recurso que move o mundo, sendo muito mais que um

conjunto de dados. O ato de transformar dados em informação é transformar algo em um

recurso de valor para a vida toda. A informação é um bem, que deve ser protegido com

cuidados por meio de políticas e regras, de maneira similar a que os recursos financeiros

e materiais são tratados.

A internet proporcionou uma série de facilidades para seus usuários; do seu advento

até os dias atuais, já ocorreram muitas inovações, dentre elas os serviços de mensagens

instantâneas, e-mail, vendas, computação em nuvem etc. A internet é utilizada de maneira

natural para vários fins, nos quais é quase impossível imaginar a vida sem ela. A forma

de se comunicar foi completamente modificada: antigamente, os principais meios de co-

municação eram as cartas/telegramas ou telefonemas (telefones analógicos). Atualmente,

a maioria da população utiliza o aparelho celular (smartphone) para realizar várias fun-

ções, como envio de e-mails, postar fotos através de aplicativos sociais, comunicação com

várias pessoas ao mesmo tempo e, em ocasiões ocasiões mais “especiais” ou “importantes”,

realizar um ligação.

A popularização da internet veio principalmente através da melhoria dos serviços

de telefonia, como telefonia móvel, disponibilidade de internet em alta velocidade para

residências, roteadores com tecnologia Wireless1 e implementação e popularização da rede

HFC. 2 A crescente modernização dos serviços de telefonia, entre eles a internet, tem1Rede sem fio, tecnologia para promover a mobilidade2Tecnologia utilizada tanto para TV’s analógicas e digitais de alta definição como para acessar a

Page 20: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

19

impactado em várias áreas da economia mundial, com o surgimento de empresas de vendas

de produtos/serviços pela internet (e-commerce), a popularização do modelo EAD e

com possibilidades de reuniões com pessoas em localizações geográficas diferentes (vídeo

conferência). Desses exemplos de impacto, destacam-se os serviços na categoria comércio

eletrônico (e-commerce).

Esses serviços lidam com uma grande quantidade de dados, denominamos como da-

dos sensíveis, dados bancários, informações sigilosas de empresas ou pessoais, entre outras.

Estes dados transitam pela rede desde a sua criação. Com isso, o número de crimes ciber-

néticos também vem aumentando, acontecendo no momento em que são disponibilizados

dados de cartões, dados bancários, ou em uma simples troca de e-mail.

Além de conectar pessoas, a internet está vivenciando uma nova fase, em que não ape-

nas pessoas com o auxilio dos seus dispositivos, como computadores, notebooks, smartpho-

nes e tablets conectam-se, mas qualquer outro equipamento, como eletrodomésticos, auto-

móveis, máquinas, sensores, atuadores e outros produtos em geral, são capazes de realizar

a conexão com a internet. Essa nova fase da internet também é conhecida como internet

das coisas IoT. Segundo (KHAN et al., 2012), a Internet das Coisas dispõe de conectividade

para toda e qualquer pessoa e para toda e qualquer coisa em qualquer tempo e lugar.

A extraordinária potencialidade da Internet das Coisas é o poder que confere a objetos

do uso cotidiano, tornando-os capazes de coletar, processar, armazenar, transmitir e expor

informações. Interligados em uma rede, estes objetos são habilitados para exercer ações

de forma independente e gerar dados em quantidade e diversidade exponenciais. Nesse

cenário, a informação passa a ser um aspecto do ambiente, e caracteriza-se em novos

contornos de comportamento das pessoas no mundo.

Com todo esse avanço nos serviços de internet e a quantidade de dispositivos que po-

dem se conectar, é necessário que exista certo nível de segurança e a criptografia trabalha

para que as informações trafeguem de forma mais segura e a comunicação desses dispo-

sitivos interligados através do IoT seja eventualmente segura. Algoritmos de criptografia

trabalham a todo o momento em cima desses paradigmas (tráfego e comunicação segura),

para tentar manter a segurança em diferentes meios de comunicação e armazenamento.

Assim como na vida real, algumas informações necessitam de privacidade, o que mos-

tra a necessidade em garantir a confidencialidade dessas informações, tornando-as seguras.

Nesse sentido, a segurança da informação visa manter estes dados protegidos, empregando

técnicas de proteção e respeitando as diretrizes de segurança que devem ser seguidas em

internet em alta velocidade.

Page 21: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

20

qualquer sistema de informação. Sendo a forma mais utilizada para prover a segurança em

pontos vulneráveis na rede, a criptografia é utilizada para barrar as ameaças e os ataques,

fornecendo técnicas para codificar e decodificar dados, a fim de que esses dados possam

ser armazenados, transmitidos e recuperados sem sua alteração ou exposição.

A RFC 2828 (Request for Coments no 2828) define o termo criptografia como a ci-

ência matemática que lida com a transformação de dados para mudar seu significado em

algo ininteligível para o inimigo, isto é, esconder seu conteúdo semântico prevenindo sua

alteração ou o seu uso sem autorização (SHIREY, 2000) por exemplo, quando uma pessoa

realiza uma compra pela internet, os dados são processados pelas aplicações de redes e

armazenados em servidores. A transferência dos dados para a rede deve ser protegida para

evitar perda de informação sensível. Esta proteção pode ser alcançada via utilização de

técnicas de encriptação de dados, como por exemplo o SSL e o TLS nesse sentido, o

SSL utiliza algoritmos criptográficos que aplicam a proteção de dados sobre o canal de

transmissão.

Através de uma implementação de códigos abertos dos protocolos SSL/TSL, a bibli-

oteca OpenSSL realiza a implementação de funções básicas de criptografia, disponibili-

zando, assim, várias funções utilitárias (OPENSSL.ORG, 2018).

1.1 Motivação

O crescimento da IoT fomentou criações de aplicações, aparelhos, sensores e outros

para tornar tudo conectado. Esse crescimento também apresenta uma discussão que en-

volve segurança, em relação à comunicação desses dispositivos, assim como a integração

de novos dispositivos. Todas as tecnologias que utilizam IoT dependem diretamente de

conectividade e segurança, pois, para que a IoT funcione, é necessário uma conexão entre

equipamentos e, sempre que se fala em conectar algum dispositivo na rede, a segurança é

algo a ser considerado.

Alguns protocolos já são bastante conhecidos e são utilizados com frequência em

aplicações IoT, como o CoAP, MQTT e o LW2M. Em relação à criptografia usada em

comunicação na rede de computadores, é comum encontrar a biblioteca OpenSSL, que

possui vários algoritmos criptográficos, sendo aceita por várias aplicações.

O nível de proteção do SSL está diretamente relacionado aos tipos de algoritmos

criptográficos utilizados na comunicação entre o cliente e o servidor. Desse modo, ao

utilizar algoritmos mais robustos, o protocolo SSL fornece, consequentemente um nível

Page 22: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

21

maior de proteção. Assim, ao inserir outros algoritmos criptográficos com maiores níveis

de segurança à sua base de cifras, é possível melhorar o nível de segurança do próprio

protocolo.

Nesse sentido, decidiu-se integrar o algoritmo de criptografia Papílio Versátil (NETO,

2009) na biblioteca OpenSSL, tornando-o um possível algoritmo usual nesta biblioteca.

Deste modo, é possível provar que o Papílio Versátil é um algoritmo capaz de realizar

as funções de encriptação e decriptação, promovendo ao OpenSSL um aumento no nível

de proteção dos dados, através de características criptográficas. Apesar dos trabalhos

desenvolvidos e suas variantes, entre elas o Papílio Versátil (RAMOS, 2002), (ARAÚJO,

2003), (ARAÚJO et al., 2005) (NETO, 2009), (FILHO, 2010) e (FILHO, 2014) em nenhum

deles abordou uma integração do algoritmo, com uma biblioteca específica para proteção

de dados. Desta forma, surgiu a oportunidade de realizar tais estudos, obtendo resultados

práticos para a implementação do Papílio Versátil na biblioteca OpenSSL.

1.2 Objetivo

O principal objetivo deste trabalho é contribuir no aumento ou melhoria da segurança

da Biblioteca OpenSSL incluindo o algoritmo Papílio Versátil, visto que, por ser um

algoritmo desconhecido pode possuir algumas vantagens em sua utilização, já que não

possui estudos para a quebra de sua criptografia. Nesse contexto, empreendemos a, os

testes realizados e a comparação com outros algoritmos utilizados na biblioteca OpenSSL,

em que, através desta investigação, conclui-se que o Papílio pode contribuir e realizar a

comunicação segura juntamente com a referida biblioteca.

A relação de objetivos específicos que esta implementação pode ocasionar está relaci-

onada da seguinte maneira:

• Provar que a implementação é possível;

• Realizar a troca de mensagens SSL/TLS, mostrando que é realizada de forma segura;

Tal estrutura pode provar que todos os esforços para a realização deste trabalho são

essenciais para sua conclusão.

Page 23: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

22

1.3 Revisão Bibliográfica

Durante o tempo de pesquisa sobre bibliografias, para ajudar a realização desta dis-

sertação, as fontes de grande importância para nortear a pesquisa foram:

1. Ramos, em "Papílio: proposta de um algoritmo de criptografia baseado no algoritmo

Viterbi e codificação convolucional"(2002), desenvolveu estudos usando o algoritmo

Viterbi Modificado como função F do codificador Feistel, a fim de atingir os princí-

pios de difusão e confusão do codificador Feistel. Além da função F, Viterbi Modi-

ficado também é utilizado para geração das sub-chaves. Ela desenvolveu o Papílio,

que é uma algoritmo do tipo convencional, em que o processo para cifrar o texto

claro é realizado em blocos. Para cada bloco de entrada é produzido um bloco de

saída (RAMOS, 2002).

2. Araújo, em "PapílioXP: uma extensão do algoritmo criptográfico Papílio"(2003),

propôs uma variante do algoritmo Papílio adicionando a capacidade de variar o

modo como cifrar os textos dependendo do texto o qual se está cifrando e de maneira

que atinja os melhores índices criptográficos possíveis, afim de que seja aumentada

a dificuldade de se conseguir quebrar a mensagem codificada. (ARAÚJO, 2003).

3. Araújo et al., em "Papílio cryptography algorithm"(2005), apresenta o algoritmo

como um algoritmo de criptografia Feistel, em que o processo codificador (função F)

é baseado no algoritmo Viterbi. Também expõe a solução do algoritmo Viterbi para

decodificar códigos convolucionais e explica a necessidade da realização de algumas

modificações no Viterbi, além de realizar uma análise dos índices criptográficos (ava-

lanche, difusão e confusão) do Papíllio, considerando todos os possíveis polinômios

diferentes e fixando os demais parâmetros. (ARAÚJO et al., 2005).

4. Neto, em "Papílio Versátil: Um algoritmo criptográfico"(2009), realizou um estudo

acerca do algoritmo PapílioXP de Araújo (2003), em que, onde as implementações

feitas trouxeram uma maior versatilidade e segurança contra a criptoanálise. Nesta

variante do Papílio, foi alterado o modo de construção de sub-chaves do Papílio, que

processa blocos de 16 Bytes (128 bits) de tamanho, permitindo utilizar chaves de

tamanho entre 16 Bytes (128 bits) e 128 Bytes (1024 bits). (NETO, 2009), (ARAÚJO,

2003).

Page 24: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

23

5. Oliveira apresentou "Criptoanálise diferencial do Papílio"(2010), em que aplicou-

se a técnica de Criptoanálise Diferencial, introduzida por Biham e Shamir, sobre o

algoritmo Papílio, a fim de testar e, principalmente, provar sua relevância em relação

a outras cifras de blocos como DES, Blow-Fish e FEAL-N(X). (FILHO, 2010).

6. Oliveira, em "Algoritmo Papílio como método de proteção de templates para au-

mentar a segurança em sistemas de identificação biométricos"(2014), promove a

utilização simultânea de criptografia com o Algoritmo de Criptografia Papílio, junto

com os modelos de proteção de templates Fuzzy Vault e Fuzzy Commitment em

sistemas de identificação baseados em biometria. (FILHO, 2014).

7. Niemiec, em "Implementation of a New Cipher in OpenSSL Environment the Case

of INDECT Block Cipher"(2016), realiza a implementação de uma nova cifra na

biblioteca de criptografia popular para amplo uso, em que é descrito o processo de

integração da nova cifra à Biblioteca OpenSSL. A cifra implementada é a INDECT

Block Cipher (IBC), uma cifra de bloco simétrica baseada em substituição. Alegando

que é possível integrar qualquer cifra simétrica no ambiente OpenSSL, o objetivo

da implementação é permitir o uso de uma nova cifra em aplicativos usando bi-

bliotecas OpenSSL, especialmente para criptografar dados em SSL/TLS Conexões.

(JURKIEWICZ; NIEMIEC, 2016).

8. Também foi utilizado a implementação do algoritmo de criptografia Camellia através

da RFC 5932 (KATO; KANDA; KANNO, 2010), que especifica o conjuntos de cifras

para o Protocolo TLS a fim de suportar a criptografia do algoritmo Camellia, o

qual também é uma cifra de bloco. Ele altera o conjunto original de cifras da RFC

4132 através da introdução de contrapartes usando os mais recentes algoritmos de

criptografia hash.

9. Caio, em "Ampliando a segurança de aplicações para a Internet das Coisas baseadas

na plataforma FIWARE"(2018), direciona o estudo para a incorporação da arquite-

tura de serviços de segurança fim-a-fim através do uso de cifragem e do controle de

acesso em todas as requisições NGSI. Realizando a implementação em NodeJs do

suporte ao DTLS 1.2 no protocolo LWM2M/CoAP com o IoT Agent, ele permite

que outros protocolos possam se beneficiar dos resultados obtidos. (OLIVEIRA et al.,

2018).

10. Em "Internet das Coisas"– Um estudo sobre questões de segurança, privacidade e

infraestrutura"(2016), Vitor apresenta um estudo sobre algumas questões básicas

Page 25: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

24

da nova fase da internet, a internet das coisas. Abordando questões relevantes à

segurança da informação e dos dados, apresentando alguns mecanismos para a pro-

teção em IoT e relata uma análise sobre a infraestrutura da internet das coisas, seus

desafios e obstáculos que retardam o seu desenvolvimento e os principais padrões

utilizados nas suas implementações.(FIGUEIRA, 2016).

11. Luis, em "Arquitetura para privacidade na integração de Internet das Coisas e com-

putação em nuvem"(2018), propõe uma arquitetura de privacidade em Cloud of

Things, permitindo ao usuário o controle completo do acesso aos dados gerados

pelos dispositivos de suas redes IoT e armazenados na nuvem. Ele desenvolve a di-

minuição da sobrecarga nos dispositivos IoT, além de avaliar a análise analítica e

experimental, utilizando o simulador de redes ns-3 para prover privacidade na Cloud

of Things. (PACHECO, 2018).

1.4 Organização do Trabalho

Neste capítulo, foi apresentado o escopo do trabalho, juntamente com suas motivações

e objetivos, e uma rápida revisão bibliográfica. No Capítulo 2, serão apresentados os

conceitos fundamentais de enriquecimento sobre o tema, como segurança da informação,

criptografia e seus sistemas criptográficos. No Capítulo 3, será abordado o algoritmo em

questão, no caso o Papílio Versátil, juntamente com algumas características do mesmo. As

versões Papílio Original e PapílioXP, assim como sua criptoanálise diferencial, também

serão abordadas neste capítulo. O Capítulo 4 trata da aplicação do Papílio no protocolo

SSL, juntamente com uma justificativa para a necessidade de se usar este protocolo,

explanando sua arquitetura, o processo de comunicação (Handshake3) e o seu sucessor, o

TSL, finalizando com o OpenSSL. O Capitulo 5 aborda os experimentos realizados neste

trabalho, com sua metodologia, sua arquitetura de testes, as etapas desenvolvidas. Por

fim, no Capitulo 6, trazemos as considerações as considerações finais e trabalhos futuros.

3Permissão com a qual o cliente e o servidor SSL ou TLS estabelecem as chaves secretas com as quaiseles se comunicam.

Page 26: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

25

2 Fundamentação Teórica

A seguir, serão apresentadas informações e conceitos básicos sobre segurança da in-

formação, juntamente com seus principais serviços. Em seguida, serão apresentados os

conceitos sobre IoT, criptografia e protocolos.

2.1 Riscos à Segurança

Segundo o CERT.br, a quantidade de incidentes reportados nos últimos anos, espe-

cificamente de 2016, foi de 647.112 contra 833.775 do ano de 2017, ou seja, ocorreu um

aumento de 29%. Na Figura 1, é possível acompanhar a evolução dessas ameaças ao longo

dos anos, a qual demonstra que as ameaças relacionadas a problemas de segurança estão

mais presente a cada dia.

Figura 1: Incidentes reportados.Fonte:CERT.Br (2018).

Pode-se observar que as taxas de crescimento aumentaram de um ano para o outro.

Por exemplo, na comparação entre os anos 2012 e 2013, e tal foi 24% menor que o total do

anterior, porém 2014 foi 197% maior que o total de 2013. Percebe-se, que 2014 é o ano de

maior número de incidentes reportados, com 1.047.031 até o momento, sendo justamente

Page 27: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

26

o ano da falha de segurança no OpenSSL, a Heartbleed1.

Com isso, pode-se dizer que a preocupação com a segurança da informação teve início

na antiguidade, com o surgimento da escrita, sobretudo no que se refere ao aspecto da

confidencialidade da informação. Com o crescimento do número de pessoas com a ha-

bilidade de ler e escrever por meio de símbolos, logo percebeu-se a necessidade de duas

pessoas poderem trocar informações sem que outras pudessem lê-las.

Em relação aos tipos de ataques, o gráfico referente ao ano de 2017 mostra que existiu

uma diminuição em alguns tipos de ataques em relação ao ano de 2016. Na análise de

alguns fatos observados nesse período, como ataques de negação de serviço, tentativas de

fraude, varreduras e propagação de códigos maliciosos, ataques a servidores Web, com-

putadores comprometidos e outros incidentes reportados, a Figura 2 ilustra a proporção

de cada tipo de ataque com respeito ao total de ataques no ano de 2017.

Figura 2: Incidentes reportados ano de 2017.Fonte: Cert.br (2018).

Para melhorar o entendimento da Figura 2, o CERT.br realizou uma pequena análise

dos fatos observados neste período, agrupados por categorias de incidentes:

• Ataques de Negação de Serviço.

– No ano de 2017, 220.188 notificações sobre computadores que participaram de

ataques de negação de serviço DoS. Este número foi quase 4 vezes maior que1Através de uma extensão chamada heartbeat, que mantém ativa uma conexão segura. Por meio da

falha, pode-se obter 64 KB de dados da memória do servidor.

Page 28: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

27

o número de notificações recebidas em 2016;

– A maioria das notificações de ataques de DoS foi recebida em julho de 2017,

referente a um ataque originado por equipamentos de IoT (Internet das Coisas)

infectados e fazendo parte de botnets2.

• Tentativas de Fraude.

– As notificações de tentativas de fraude totalizaram 59.319 incidentes em 2017,

correspondendo a uma queda de 42% em relação a 2016;

– Em 2017, as notificações de casos de páginas falsas de bancos e sites de comércio

eletrônico (phishing clássico) caíram 46% em relação a 2016;

– As notificações sobre Cavalos de Troia, utilizados para furtar informações e

credenciais, tiveram uma queda de 7% em relação ao ano de 2016;

– Em 2017, o número de notificações de casos de páginas falsas que não envolvem

bancos e sites de comércio eletrônico teve um aumento de 6% em relação a

2016. Nesses casos, estão incluídos os serviços de webmail e redes sociais, por

exemplo.

• Varreduras e propagação de códigos maliciosos.

– As notificações de varreduras somaram 443.258 em 2017, correspondendo a um

aumento de 15% com relação a 2016;

– Os serviços que podem sofrer ataques de força bruta continuam sendo muito

visados: SSH (22/TCP com 47% das notificações de varreduras, TELNET

(23/TCP) com 9%, RDP (3389/TCP) com 2% e FTP (21/TCP) com 1% das

notificações em 2017;

– As varreduras de TELNET (23/TCP), bem como o par de varreduras 23/TCP e

2323/TCP, que continuam a ter destaque desde 2015, correspondem a 14% das

notificações e parecem visar dispositivos IoT e equipamentos de rede alocados

às residências de usuários finais, tais como modems (ADSL, cabo e fibra),

roteadores Wi-Fi etc.;

– As notificações de varreduras de SMTP (25/TCP), que em 2016 correspondiam

a 30% de todas as varreduras, agora correspondem a 21%. As portas IMAP

(143/TCP) e Message Submission (587/TCP) correspondem respectivamente

a 3% e 1% das notificações;2Grupo de computadores conectados à Internet, cada um deles rodando um ou mais bots e se comu-

nicando com outros dispositivos, a fim de executar determinada tarefa.

Page 29: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

28

– As varreduras de SMTP (25/TCP) são relativas a 3 tipos de abuso: tentativas

de envio de e-mails com uso de dicionários de nomes de usuários; exploração de

servidores de e-mail como open-relays ; e ataques de força bruta para envio de

mensagens utilizando credenciais de usuários existentes nos sistemas atacados;

– As varreduras de IMAP (143/TCP) e Message Submission (587/TCP) são

relativas a ataques de força bruta para obtenção das credenciais de usuários

existentes nos sistemas atacados e posterior envio de e-mail utilizando as cre-

denciais descobertas;

– As notificações de atividades relacionadas com a propagação de worms e bots

(categoria worm) totalizaram 45.101 em 2017, aumento de 60% em comparação

com 2016.

• Ataques a servidores Web.

– No ano de 2017, houve um aumento de 10% nas notificações de ataques a

servidores Web em relação a 2016, totalizando 60.766 notificações;

– Os atacantes exploram vulnerabilidades em aplicações Web para comprometer

sistemas e então realizar as mais diversas ações, tais como: hospedar páginas

falsas de instituições financeiras, armazenar ferramentas utilizadas em ataques,

e propagar spam e/ou scam;

– Observa-se que, durante o ano de 2017, um aumento das notificações de ataques

de força bruta contra sistemas de gerenciamento de conteúdo CMS tais como

WordPress e Joomla foram, em sua maioria, tentativas de adivinhação das

senhas das contas de administração destes sistemas.

• Computadores comprometidos.

– Em 2017, 401 notificações de máquinas foram comprometidas. Este total foi

76% menor do que o número de notificações recebidas em 2016;

– A maioria das notificações de computadores comprometidos foi referente a

servidores Web que tiveram suas páginas desfiguradas.

• Outros incidentes reportados.

– Em 2017, 4.742 notificações que se enquadram na categoria "outros"corresponderam

a um número 68% menor que o total de 2016.

Page 30: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

29

Todas as estatísticas dos incidentes apresentadas pelo CERT.br demonstram que as

ameaças de segurança estão presentes a cada dia, e as empresas precisam se conscientizar

desse aumento, justificando a implementação de segurança da informação.

2.2 Segurança da Informação

A segurança da informação visa aplicar medidas de proteção para os dados, sendo eles

processados, armazenados ou transmitidos nos sistemas de informação ou comunicações.

Independente do tipo de sistema utilizado, busca-se sempre proteger essa informação

do uso indevido (intencional ou acidental) por parte de quem manipule esses dados. A

vulnerabilidade ou falha de segurança pode acontecer por meio de um “bug”3 em um

sistema operacional ou aplicação, ou através de uma atualização que foi realizada sem os

devidos testes, como em um servidor Web ou em servidor com qualquer SO.

Um usuário que tem sua respectiva senha divulgada de maneira indevida ou descui-

dada também indica uma vulnerabilidade. Por exemplo, um determinado funcionário pode

sabotar uma base de dados dos funcionários de uma determinada empresa por vingança,

ou mesmo um espião industrial. O fato é que não existe sistema ou informação 100%

segura, visto que, ao utilizar a rede pública as informações que são disponibilizadas ou

pesquisadas estão sujeitas a riscos, pelo fato de não existir um controle completo, ficando

assim sempre vulneráveis a ataques.

Esses ataques contra a segurança da informação causam grandes prejuízos financeiros

às grandes corporações, pois elas não possuem um noção clara do valor da informação

que assim, quando ocorre um ataque que resulta em um “downtime”4 da rede, caso ele se

torne público, as perdas com produtividade e principalmente com relação à imagem da

empresa são muitas vezes incalculáveis.

Noções de Confidencialidade, Integridade e Disponibilidade

A segurança dos canais de comunicação corresponde à restrição na capacidade forne-

cida no E-interface , que pode ser caracterizada em função de dois aspectos: a quantidade

de informação vazada sobre mensagens transmitidas e a potencial influência sobre as men-

sagens entregues ao receptor. Por conseguinte, uma garantia de confidencialidade limita3Termo utilizado quando é encontrado um erro em algum programa que faz com que aja de maneira

inesperada ou fora do comum.4porcentagem de tempo em que um sistema de computador, ou um de seus componentes, perma-

nece inativo por causa de um problema inesperado ou para fins de manutenção, troca de equipamento,arquivamento de dados antigos.

Page 31: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

30

a quantidade de informação que é divulgada, e uma garantia de integridade restringe a

influência contraditória em mensagens entregues. A seguir, serão descritos cada pilar da

segurança da informação.

Confidencialidade

Tem como principio a proteção da informação em sistemas, recursos e processos para

que ela não possa ser acessada por pessoas não autorizadas. Essa informação não pode

ser disponibilizada para quem não tem a devida autorização para acessá-la. A confidenci-

alidade também é um mecanismo que garante a privacidade dos dados.

O acesso das pessoas autorizadas a essas informações armazenadas ou transmitidas se

dá por meio de redes de comunicação. Manter a confidencialidade pressupõe assegurar que

as pessoas não tomem conhecimento de informações, de forma acidental ou proposital.

Alguns aspectos importantes da confidencialidade são a identificação a autenticação e a

autorização. A confidencialidade pode ser obtida criptografando os dados armazenados e

transmitidos, restringindo os acessos, classificando os dados e criando procedimentos de

segurança.

Integridade

A integridade consiste na garantia de que a informação permaneceu íntegra, o que

significa que ela não sofreu nenhuma espécie de modificação durante a sua transmissão

ou armazenamento, sem a autorização do autor da mensagem.

Esquemas de criptografia em geral não protegem a integridade das mensagens. No en-

tanto, são utilizados para verificar se houver qualquer alteração de integridade do objeto

encriptado. Por exemplo, se um atacante substitui o texto cifrado c transmitido para uma

mensagem m ∈ M , em que m é a nova mensagem que foi modificada de M , uma cifra

c∗ = c, o receptor irá potencialmente obter uma mensagem diferente m ∈ M durante

a decriptação. Para o atacante (m), substituindo c por c∗ corresponde a selecionar uma

transformação F : M → M que descreve, para cada mensagem m̃ potencialmente trans-

missível, que mensagem m̃′ = F (m̃) o receptor teria obtido, uma vez que a mensagem

original foi m̃.

A integridade está relacionada com a proteção da informação ou o processo para que

não seja intencionalmente ou acidentalmente alterada, ou seja, alterada sem a devida au-

torização (controle de fraude). Nenhum usuário possui a capacidade de alterar os dados de

forma a corrompê-los, ou causar perdas financeiras, tornando a informação não confiável.

Page 32: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

31

A integridade é fundamental e crítica em alguns sistemas, como:

• Sistemas de controle de tráfego aéreo;

• Sistemas financeiros em geral;

• Comércio eletrônico;

• Sistemas de infraestrutura básica, como fornecimento de energia elétrica, água e gás.

Disponibilidade

Consiste na garantia de que as informações estejam acessíveis às pessoas e aos pro-

cessos autorizados, a qualquer momento requerido, durante o período acordado entre os

gestores da informação e a área de informática. Manter a disponibilidade de informações

pressupõe garantir a prestação contínua do serviço, sem interrupções no fornecimento de

informações para quem é de direito. As ameaças à disponibilidade estão relacionadas a

ataques de negação de serviços (DoS) e perdas resultantes de desastres naturais, como

fogo, enchente, terremotos ou ações humanas. Esses ataques ocorrem e deixam os serviços

indisponíveis.

2.3 Criptografia

O conceito de criptografia, segundo (SIMON, 2000), pode ser visto como a proteção

de informações sensíveis do acesso não autorizado de terceiros, isto é, de pessoas que não

são o remetente nem o destinatário dessas informações e dados. A subseção 2.5.1 descreve

características desejáveis em um algoritmo criptográfico. Já as subseções 2.5.2 e 2.5.3

apresentam, respectivamente, os sistemas criptográficos e funções Hashing.

Ciência que utiliza algoritmos matemáticos para criptografar/encriptar (cripto = es-

conder) dados (texto claro) em uma forma aparentemente não legível (texto cifrado) e

recuperá-los (decriptografá-los). Com essa ciência, o custo de tentar descobrir o conteúdo

das mensagens cifradas torna-se maior do que o potencial ganho com os dados. (FERNAN-

DES, 2013) Utilizada para codificar informação pelos egípcios em forma de hieróglifos, seu

uso cresceu de forma considerável juntamente com a proliferação de computadores e as

necessidades de proteção da informação digital.

Características desejáveis em um algoritmo criptográfico

Page 33: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

32

A criptografia tem o intuito de oferecer a maior dificuldade possível à tentativa de um indi-

víduo não autorizado descobrir o conteúdo da mensagem cifrada. Para isso, os algoritmos

criptográficos baseiam-se em alguns critérios para atingir tal objetivo, como avalanche,

confusão e difusão.

Avalanche

Corresponde à influência que um bit da chave ou do texto claro possui no resultado do

processo de cifragem. Conforme (RAMOS, 2002) descreveu, considera-se um bom algoritmo

em que a modificação de um bit na chave ou texto claro, influencia no estado de 50% dos

bits do texto cifrado. Essa característica já dificulta a dedução da chave ou do texto claro

a partir do texto cifrado, caso um intruso subtraía essa mensagem, pois, caso ele erre em

pelo menos um bit o texto cifrado, o resultado obtido terá uma diferença de 50% do texto

cifrado originalmente.

Difusão

Corresponde à destruição da estatística de ocorrências dos símbolos presentes no texto

cifrado, coibindo assim o ataque estatístico, que é baseado na ideia de frequência de

aparição dos símbolos do texto cifrado similar aos símbolos do texto claro. Como explicado

em Araújo (2003), caso o texto claro seja proveniente de uma linguagem natural, basta

que o intruso disponha de uma tabela de frequência natural de aparição destes caracteres

para fazer a correspondência um para uma dos símbolos do texto cifrado e do texto

claro.(ARAÚJO, 2003)

Confusão

Corresponde o quanto é incompreensível a relação entre o texto claro e o texto cifrado.

(RAMOS, 2002) explica que, quando um bit da chave ou do texto claro é alterado, o

algoritmo que satisfaz a confusão deve produzir um texto cifrado com símbolos diferentes.

A confusão é similar à avalanche, só que ela se preocupa com os símbolos gerados e não

com o estado dos bits.

Sistemas Criptográficos

A implementação dos sistemas criptográficos geralmente ocorre via software, por ser

mais barata, entretanto o resultado é mais lento e menos seguro (FERNANDES, 2013), visto

Page 34: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

33

que o software é mais fácil de ser modificado e forjado. A implementação via hardware é

feita através de chips e microprocessadores dedicados à criptografia. São mais rápidos que

os controlados por software, entretanto menos flexíveis.

O processo de encriptação e decriptação requer o uso de informações secretas, conhe-

cidas como chaves. A chave geralmente é um numero primo, utilizado em conjunto com

um algoritmo criptográfico na criação do texto cifrado, que possui alguns atributos.

• Tamanho: número de bits/bytes da chave;

• Espaço: coleção de combinações matemáticas que possuem o mesmo tamanho de

chave.

O gerenciamento das chaves criptográficas deve definir mecanismos para geração, dis-

tribuição, entrada e saída, armazenamento e arquivamento

• Geração de chaves: deve obrigatoriamente fazer uso de um algoritmo devidamente

testado. O gerador de números aleatórios deve garantir que todos os valores dos bits

são gerados igualmente, assim como o padrão de geração de chaves não pode ser

de conhecimento público. Portanto é preciso usar algoritmos randômicos que geram

números aleatórios.

• Distribuição de chaves: podendo ser realizada manualmente, automática (via

teclado ou smart cards) ou uma combinação. O canal utilizado para o envio e a

troca de chaves criptográficas deve ser o seguro.

• Armazenamento de chaves: as chaves não podem ser acessíveis, entretanto, é

muito útil armazenar as chaves criptográficas em um arquivo para o caso de perda,

permitindo assim a sua recuperação. Esse arquivo deve estar localizado em um

computador que esteja em um ambiente seguro e controlado.

Em modos gerais, a criptografia é dada a partir de uma mensagem original M que é

transformada em uma mensagem criptografada M∗, pela aplicação de um algoritmo A,

com uma ou mais chaves k independentes da mensagem. O algoritmo deve produzir uma

saída única para cada chave passível de ser utilizada. A Figura 3 demostra a encriptação

de uma mensagem após ser codificada pelo algoritmo A.

Page 35: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

34

Figura 3: Método de criptografar um dado.Fonte: Elaborada pelo autor (2018).

Para recuperar a mensagem original M , aplica-se sobre M∗ o processo de decriptação,

utilizando a chave correspondente, através da aplicação do mesmo algoritmo A, junto com

a chave K correspondente. Essa operação é inversa à criptografia, como mostra a Figura

4.

Figura 4: Método de decriptação de um dado.Fonte: Elaborada pelo autor (2018).

O segredo do algoritmo não pode fundamentar a segurança do mesmo, pois, se ele

apenas for seguro se permanecer secreto, então ele só será seguro até o momento no qual

se aplique a decriptação e o torne público. A segurança deve estar centrada no conjunto

de chaves. Desta forma, dificulta-se que um intruso possa recuperar M apenas em posse

do algoritmo utilizado para gerar a mensagem criptografada M (STALLINGS, 2008).

Algoritmos criptográficos devem ser razoavelmente eficientes (do ponto de vista de

Page 36: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

35

tempo computacional envolvido), de modo a poderem ser aplicados conforme o conhe-

cimento das chaves envolvidas. Ou seja, deve ser computacionalmente fácil executar as

funções de encriptação e decriptação desde que as chaves sejam conhecidas. (STALLINGS,

2008), classifica os algoritmos de criptografia em uma forma genérica em três tipos: quanto

ao seu número de chaves, tipos das operações usadas para criptografar as mensagens e

modo de processamento da mensagem original.

1. Número de chaves: Podendo ser de chaves simétricas ou chaves assimétricas.

A simétrica também conhecida como chave privada, ocorre quando o remetente e

o receptor utilizam a mesma chave para encriptar e decriptar. Diferentemente, a

assimétrica, também conhecida como chave pública, utiliza chaves diferentes, para

realizar as operações, encriptar ou decriptar.

2. Tipo das operações usadas para criptografar as mensagens: No geral, os

algoritmos de criptografia são fundamentados em dois princípios: substituição ou

transposição. Na substituição, cada elemento do texto é mapeado em outro elemento.

Já na transposição, os elementos são rearranjados dentro do texto.

3. Modo processamento da mensagem original: Caso a mensagem original seja

processada utilizando como unidade de entrada e saída blocos de dados de tamanho

fixo, o algoritmo é dito como uma cifra de bloco. Caso a mensagem original seja

processada de forma contínua, como uma única unidade de dados, não importando

o seu tamanho, o algoritmo é dito como uma cifra de fluxo.

Sistemas Simétricos

Todas as informações reservadas, que possuem algum valor para a atividade econômica

de empresas ou pessoais, e que podem ser transportadas em um meio inseguro, devem

ser criptografadas. Os sistemas de chaves simétricos, baseado no conhecimento entra as

partes da comunicação de uma chave secreta, geralmente são utilizados quando existe

uma grande quantidade de dados a serem criptografados. Esse sistema não é capaz de

promover o não repúdio5. A Figura 4 ilustra como é realizado o processo de criptografia

de chave simétrica.

5Não repúdio é um serviço de segurança que consiste em técnicas e métodos para que o remetente damensagem não possa negar, no futuro, o envio dela.

Page 37: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

36

Figura 5: Método de criptografia de chave simétrica.Fonte: Elaborada pelo autor (2018).

Principais Algoritmos de Criptografia Simétrica

• DES e 3DES: O DES é um algoritmo criptográfico padrão, desenvolvido nos anos

de 1970 pelo NIST em conjunto com a IBM. A chave possui tamanho de 56 bits.

No 3DES, o algoritmo DES é aplicado três vezes com três chaves distintas a 168

bits ou duas distintas de 112 bits (ROBACK; M., 1998). O DES substitui os bits da

mensagem clara pelos bits da mensagem criptografada. Como o processo é simples,

os algoritmos possuem rápida execução.

• RC2 : Desenvolvido por um dos fundadores do RSA Ronald Rivest. É vendido pela

RSA e permite o uso de chaves criptográficas de até 2.048 bits.

• RC4: Uma evolução do RC2, sendo mais rápido. Também é um produto da RSA

que trabalha com chaves de até 2.048 bits.

• RC5: Publicado em 1994 e permite o uso de chaves com tamanhos definidos pelo

usuário.

• IDEA: O IDEA foi desenvolvido por James Massey e Xuejia Lai. Ele utiliza uma

chave de 128 bits e a patente pertence a ASCOM TECH AG, uma empresa Suíça.

• AES: AES criado pelo NIST com um padrão avançado de criptografia com o

objetivo de substituir o DES e o 3DES. Ele surgiu em um concurso realizado pelo

NIST. (ROBACK; M., 1998). Os fatores analisados para a escolha do algoritmo foram

Page 38: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

37

segurança (esforço requerido para criptoanálise), eficiência computacional, requisitos

de hardware e software, simplicidade e licenciamento (FERNANDES, 2013). Trabalha

com um bloco fixo de 128 bits e uma chave cujo o tamanha varia entre 128, 192 ou

256 bits.

Nome do Algoritmo Tipo de Encriptação Tamanho da ChaveDES Bloco 56 ou 64IDEA Bloco 128

RC2 - RC5 Bloco 1 a 2.0483DES Bloco 56 ou 112AES Bloco 128, 192 ou 256

Tabela 1: Principais algoritmos criptográficos simétricos.Fonte: Fernandes (2013).

Sistemas Assimétricos

Os sistemas assimétricos, criados em 1976 por Whitfield Diffie e Martin Hellman

(FERNANDES, 2013), utilizam uma chave pública conhecida por ambas as partes e uma

chave privada que é mantida em segredo para encriptar os dados, ou seja, cada um dos

interlocutores necessita gerar um par de chaves públicas e privadas. Esses sistemas exigem

mais recursos computacionais, e em geral são utilizados para distribuir chaves secretas ou

enviar pequenas mensagens.

Enquanto uma chave é utilizada para a encriptação, a outra é usada para decriptação.

Esse modo por ser mais complexo, é muito mais lento que a criptografia simétrica, algo

de cem a mil vezes mais lento (FERNANDES, 2013). Ela permite, além de proteger as

informações, fornecer um mecanismo eficiente para a assinatura digital6 e o certificado

digital7. A Figura 6 ilustra como é realizado o processo de criptografia de chave assimétrica.

Principais Algoritmos de Criptografia Assimétrica6Serve para verificar a autenticidade e a integridade da mensagem.7Utilizado para verificar se uma chave pública é mesmo de determinado usuário.

Page 39: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

38

Figura 6: Método de criptografia de chave assimétrica.Fonte: Elaborada pelo autor (2018).

• DSA - Digital Signature Algorithm: Algoritmo que opera sobre o hash da

mensagem SHA-1. Para verificar a assinatura, um pedaço do código calcula o hash

e outro pedaço usa a chave pública para decifrar a assinatura, e, por fim ambos

comparam os resultados, garantindo a autoria da mensagem. Utilizando chaves de

512 à 1024 bits, o DSA somente assina e não garante confidencialidade (STALLINGS,

2008).

• RSA: Desenvolvido por Ron Rivest, Adi Shamir e Leonard Adleman em 1977 (STAL-

LINGS, 2008) a segurança desse algoritmo está diretamente relacionada com a di-

ficuldade de realizar fatorações. Utilizam chaves com 1000 bits e em níveis mais

críticos; chaves com 2000 bits também são utilizadas.

• Diffie-Hellman: Foi o primeiro algoritmo de chave pública, criado em 1976 (DIFFIE;

HELLMAN, 1976), e leva o nome dos inventores Whitfield Diffie e Martin Hellman.

Baseia-se no uso de chaves logarítmicas discretas.

• Curvas elípticas: Técnica inicialmente proposta em 1985 por Victor Miller e Neal

Koblitz como uma atraente forma de implementação de um sistema de chave pública

em algumas das aplicações existentes. Baseada na matemática das curvas elípticas,

com argumentos de que a ECC pode ser mais rápida e utilizar chaves mais curtas

do que os métodos como RSA, podendo proporcionar ao mesmo tempo um nível de

segurança equivalente (BARRETO, 1999)

Page 40: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

39

Nome do Algoritmo Tipo de Encriptação Tamanho da ChaveDSA Assinatura digital Logaritmo discretoRSA Confidencialidade, assinatura

digital e troca de chavesFatorização

Diffie-Hellman Troca de chaves Logaritmo discretoCurvas elípticas Confidencialidade, assinatura

digital e troca de chavesUso de pontos de curvas elípticas

Tabela 2: Principais algoritmos criptográficos assimétricos.Fonte: (FERNANDES, 2013).

Funções Hashing

A técnica mais utilizada para realizar a verificação e garantir a integridade do dados é

a hashing, que é o resultado de uma função matemática que calcula a quantidade de dados

armazenados ou transmitidos no meio de comunicação. Quando ocorre uma transmissão,

a mensagem é processada na origem, calcula-se a hashing e em seguida envia-se o hashing

junto com a mensagem; quando a mensagem chega ao destino, o cálculo é refeito para

depois comparar o novo hashing com o que foi recebido, junto com a mensagem. Se o valor

estiver diferente, implica que a mensagem foi alterada e esse mesmo processo é realizado

com as mensagens armazenadas. A seguir algumas características fundamentais para a

hashing (FERNANDES, 2013).

• A entrada da função de hashing pode ser de qualquer tamanho para cálculo;

• O hash sempre tem o tamanho fixo;

• Devem ser fáceis de computar;

• O hash é unidirecional e impossível de converter;

• O hash é livre de colisão, ou seja, dois textos diferentes não podem possuir o mesmo

hash.

O SHA1 (Secure Hash Algorith,) e o MD5 (Message-Digest algorithm 5) são os

principais algoritmos de Hashing. O primeiro realiza o cálculo sobre uma mensagem de

qualquer tamanho, gerando um resultado (digest) de 512 bits. É utilizado em conjunto

com os algoritmos criptográficos DES (Data Encryption Standard), Triple DES e AES

(Advance Encryption Standard). O MD5, criado em 1991, processa a entrada em blocos

de mensagens de 512 bits e gerar o Dgest (hash) de 128 bits, estando sujeito a colisões

(FERNANDES, 2013).

Page 41: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

40

2.4 OpenSSL

O OpenSSL é um toolkit de código aberto, que implementa os protocolos SSL e TLS,

e funções criptográficas de uso geral. É escrito em linguagem de programação C, o que

facilita a implementação em seus códigos (OPENSSL.ORG, 2018). Suas versões estão dis-

poníveis para a maioria dos sistemas operacionais: Unix, Windows e MAC OS. As bibli-

otecas compartilhadas do OpenSSL são pré-instaladas em muitas distribuições Linux. O

OpenSSL consiste em três componentes principais: bibliotecas (libcrypto e libss) e duas

ferramentas de linha de comando que serão descritas a seguir(OpenSSL).

Pelo fim dos anos 1990, grandes empresas já realizavam vendas de produtos pela

internet, o que se tornou conhecido como e-commerce. Atualmente, esse tipo de negociação

é comum e o seu crescimento foi extremamente elevado quando comparado ao seu início.

Hoje, até mesmo os mais desconfiados já realizam compras pela rede, ou acessam suas

contas bancárias através de portais web dos seus bancos (Internet Banking). Grande parte

dos usuários de internet já realizam transações financeiras, pagando contas ou comprando

através da rede, trocando todos os dias informações sensíveis através da internet. Estas

informações variam desde um simples e-mail pessoal até números de cartão de crédito.

Como a maioria dos dados que são compartilhados são extremamente sigilosos a todo

o momento pela internet, a segurança se tornou um ponto crucial para os negócios e

organizações. E para garantir uma proteção na transmissão de dados, com o uso dos pro-

cessos de criptografia, fez-se necessária a utilização de um protocolo efetivo para atender

amplamente todos os tipos de transação realizada pela web. Este protocolo é o Secure

Socket Layer, mais conhecido como SSL, que se apresenta juntamente com o seu sucessor,

o Transport Layer Security (TLS).

Segundo Stallings (STALLINGS, 2008), o SSL possui pontos principais:

• Oferece serviços de segurança entre TCP (Transmission Control Protocol) e apli-

cações que usam TCP. Sua versão padrão na internet é TLS (Transporte Layer

Service).

• Confidencialidade usando criptografia simétrica e integridade de mensagens usando

código de autenticação de mensagens.

• Inclui mecanismos de protocolo para permitir que dois usuários TCP determinem

os mecanismos e os serviços de segurança que eles usarão.

Page 42: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

41

2.5 Justificativa para a Necessidade do Protocolo

Para entender o SSL, é necessário entender o ambiente para o qual ele foi desenvolvido.

Mesmo que o SSL seja um protocolo flexível que pode ser utilizado em muitas aplicações

diferentes, originalmente ele foi desenvolvido para a internet. Seus inventores precisavam

tornar o comércio eletrônico e outras transações pela web mais seguras. Um ambiente de

fato muito perigoso. Por exemplo, (THOMAS, 2000) mostra o que acontece quando um

usuário em Berlim executa uma compra online em um site de San Jose, Califórnia, na

Figura 7.

Figura 7: Caminho, através dos sistemas, de Berlim a San José.Fonte: (THOMAS, 2000).

A Figura 7 mostra todas as rotas de endereçamentos que as mensagens, incluindo

dados sigilosos, como número de cartão de crédito, passam até chegar ao receptor ou

a quem de fato está sendo solicitado, nesse caso, na Alemanha, passando por diversos

países. Desta forma, em meio a esse caminho todo, a mensagem pode sofrer alguma

interferência, pois atravessa diversas instalações, as quais algumas pertencem às empresas

privadas, muitas das quais não estão sujeitas a uma regulamentação ou a algum tipo de

lei que garanta a privacidade das informações que elas transportam. Assim, elas podem

Page 43: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

42

ser “roubadas” em alguma parte dessa viagem.

Pinheiro et al. (PINHEIRO F. V.; VIEIRA; SILVA, 2016) explica da seguinte maneira: Nem

o usuário, nem o servidor possuem controle a respeito do caminho que suas mensagens

seguirão, também não podem controlar quem irá examinar o conteúdo das mensagens

através da rota. É como se o usuário escrevesse o número do seu cartão de crédito em

uma carta e a colocasse em uma garrafa. O usuário não tem controle sobre como esta

mensagem atingirá o seu destino e qualquer um no caminho pode facilmente ler a sua

carta. A Figura 8 mostra bem a descrição feita em Pinheiro et al.

Figura 8: Caminho físico da Califórnia à Alemanha.Fonte: (PINHEIRO F. V.; VIEIRA; SILVA, 2016).

2.6 Surgimento do SSL

Diante da situação crítica que era a grande massa de dados sigilosos sendo compar-

tilhada pela web, a área de segurança na internet se tornou uma importante personagem

nesse meio. A Netscape Communications já considerava riscos de segurança desde o desen-

volvimento do seu primeiro navegador web. Para garantir a segurança nestas transações, a

Netscape desenvolveu o Secure Socket Layer protocol. A Figura 9 apresenta um diagrama

mostrando a evolução do SSL em paralelo à internet, segundo Thomas (THOMAS, 2000).

Page 44: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

43

Figura 9: SSL foi desenvolvido juntamente com os primeiros navegadores web.Fonte: (THOMAS, 2000) .

O SSL é um protocolo que se utiliza de dois tipos de criptografia (Assimétrica e

Simétrica),em que, inicialmente estabelece a conexão com uma criptografia assimétrica.

Através desta conexão segura, realiza a troca de chave da criptografia simétrica e, por

fim, continua a comunicação dos dados com uma criptografia simétrica. Segundo Stallings

(STALLINGS, 2008), este fluxo resolve diversos problemas que se têm utilizando os modelos

de criptografia simétrica/assimétrica separadamente.

O SSL foi criado como um protocolo separado para segurança, sendo considerado uma

nova camada na arquitetura TCP/IP, conforme demonstrado na Figura 10, no processo

de camadas considerando seguro, com o Protocolo inserido.

Page 45: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

44

Figura 10: O protocolo considerado como uma nova camada na arquitetura TCP/IP.Fonte: Elaborada pelo autor (2019).

Essa metodologia permite que o SSL seja utilizado para outras aplicações que não

sejam o HTTP, como, por exemplo, FTP, POP3 e SMTP, conforme demostra a Figura

11.

Figura 11: Utilização do SSL por outras tecnologias.Fonte: Elaborada pelo autor (2019).

Segundo Pinheiro et al. (PINHEIRO F. V.; VIEIRA; SILVA, 2016), a Netscape Communi-

cations desenvolveu as primeiras três versões do SSL com uma assistência significante da

comunidade web. Apesar de o desenvolvimento do SSL ter sido "aberto"e a própria Nets-

cape ter encorajado outros da indústria a participar, o protocolo tecnicamente pertence

à Netscape (de fato, a Netscape recebeu a patente dos EUA).

Entretanto, em 1996, o desenvolvimento do SSL se tornou responsabilidade de uma

organização internacional de padrões, a Internet Engineering Task Force (IETF). O IETF

desenvolve muitos dos protocolos padrões para a internet, incluindo, por exemplo, TCP/IP.

Page 46: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

45

Para evitar qualquer imparcialidade em relação a alguma empresa em particular, o IETF

renomeou SSL para Transport Layer Security (TLS).

Ainda em Pinheiro et al. (PINHEIRO F. V.; VIEIRA; SILVA, 2016),afirma-se que, atual-

ment, todos os navegadores e servidores web suportam o SSL. Pode-se observar o prefixo

"HTTPS": para uma URL segurada pelo SSL. Alguns navegadores também exibem um

pequeno ícone para indicar segurança, ou seja, o SSL funciona sem que o usuário se preo-

cupe com o que está acontecendo, apenas tendo a certeza de que os seus dados estão sendo

compartilhados com confidencialidade, autenticação, segurança e integridade através da

internet.

2.7 Arquitetura, Propriedades e Funcionamento

O protocolo SSL é utilizado principalmente sobre o modelo Cliente-Servidor. Esta

distinção é muito importante, porque o SSL exige que cada um dos sistemas se comporte

de forma diferente e única. Stalling (STALLINGS, 2008) considera o cliente como sendo o

sistema que inicia a comunicação segura, enquanto o servidor responde ao pedido do cli-

ente. No modo mais comum de aplicação do SSL, a navegação Web segura, os navegadores

(Firefox, iExplorer, Chrome, etc.) são os cliente e o site é o servidor. Estes dois papéis se

empregam em todas as aplicações que usam o SSL.

Para o SSL, Pinheiro et al. (PINHEIRO F. V.; VIEIRA; SILVA, 2016) afirma que as dis-

tinções mais importantes entre cliente e servidor são suas ações durante a negociação dos

parâmetros de segurança. Logo que o cliente inicia a comunicação, ele tem a responsabi-

lidade de propor ao servidor um grupo de opções que dizem respeito aos algoritmos de

criptografia e funções hash a serem utilizados durante toda a comunicação. O servidor

verifica a melhor (mais segura) opção de algoritmos e funções hash entre ele e o cliente e

então decide o que será utilizado.

Sem a utilização do SSL, uma conexão é estabelecida com o seguinte fluxo:

1. Handshake TCP 8

2. O cliente e o servidor iniciam o processo normal definido pelo protocolo de camada

de aplicação (HTTP, SMTP, FTP, POP3 e outros)

Com a utilização do SSL, uma conexão é estabelecida com o seguinte fluxo:8Apresentação em três vias.

Page 47: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

46

1. Handshake TCP

2. Processo de autenticação e encriptação

3. O cliente e o servidor iniciam o processo normal definido pelo protocolo de camada

de aplicação (HTTP, SMTP, FTP, POP3 e outros)

Segundo, (ROCHA; PEDROSO; JUNIOR, 2003), dentre suas propriedades, o protocolo

SSL proporciona: segurança criptográfica, interoperabilidade, escalabilidade e eficiência.

• Segurança criptográfica: O SSL deve ser usado para estabelecer uma conexão

segura em duas partes;

• Interoperabilidade: Programadores independentes podem desenvolver aplicações

utilizando o SSL que, então, será capaz de trocar parâmetros criptográficos sem o

conhecimento de um outro código;

• Escalabilidade: SSL provê que novos métodos de criptografia possam ser adicio-

nados, se necessários. Isso se faz para evitar a criação de um novo protocolo, alé, do

risco de ter que implementar uma nova aplicação segura e, com isso, anular o risco

de uma falha;

• Eficiência: Operações criptográficas costumam usar intensivamente o CPU e, par-

ticularmente, operadores de chave pública. Por essa razão, o SSL tem incorporado

o sistema de cachê de sessão para reduzir o número de conexões que necessitam ser

estabilizadas desde o começo. Além do mais, um cuidado muito especial tem sido

tomado para reduzir a atividade de rede.

Estabelecendo uma comunicação

Conforme descrição anterior, todas as comunicações utilizam o protocolo Handshake.

É negociada uma conexão segura entre o Cliente e o Servidor, através de uma série de

passos, em que são decididos os algoritmos que vão ser utilizados e a geração dos segredos,

que são geralmente números aleatórios, nos seguintes passos:

• Negociação dos algoritmos a serem utilizados;

• Troca de chaves (segredos) e autenticação;

• Encriptação simétrica e autenticação de mensagens.

Page 48: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

47

As quatro etapas a seguir foram sugeridas na leitura de (PINHEIRO F. V.; VIEIRA;

SILVA, 2016), (STALLINGS, 2008) e (THOMAS, 2000). Na primeira fase, cliente e servidor

decidem quais os algoritmos suportados por ambos que serão utilizados na comunicação

(RSA, DAS, ECDSA). O cliente faz o pedido a um servidor que suporte o protocolo

SSL por uma conexão segura e lhe envia uma lista com os algoritmos disponíveis para a

encriptação e a autenticação dos dados.

Na segunda fase, o servidor recebe o pedido e escolhe dentre os algoritmos da lista

do cliente o mais forte; ele também possui esse algoritmo, e o avisa desta decisão. Ambos

trocam chaves e realizam a autenticação - são utilizados algoritmos de chave pública

(RSA, Diffie-Hellman, etc). Para sua autenticação, o servidor envia sua identificação na

forma de um certificado digital. Este certificado normalmente contém o nome do servidor,

a Autoridade Certificadora para verificação e sua chave pública.

Na terceira fase, as mensagens são autenticadas por códigos gerados por funções hash

HMAC-MD5 ou HMAC-SHA. Daí em diante as mensagens são trocadas com integridade,

segurança e autenticação depois de passarem pelo SSL Record Protocol. Na maioria dos

casos, a autenticação do servidor é feita através de uma Autoridade Certificadora (AC).

Dessa maneira, o cliente utiliza uma chave pública da própria AC para validar sua assi-

natura no site do servidor. A AC deve estar na lista de AC’s confiáveis para ter certeza

de que o servidor é quem ele diz ser, como demostra a Figura 12.

Figura 12: Estabelecimento de uma conexão segura com SSL.Fonte:(PINHEIRO F. V.; VIEIRA; SILVA, 2016).

Em relação aos protocolos, o SSL tem em sua composição quatro tipos, que são:

Page 49: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

48

Record Protocol, Handshake Protocol, Alert Protocol e Change Cipher Spec.

• Record Protocol:

Segundo Thomas (THOMAS, 2000), a comunicação do protocolo SSL se dá através

da comunicação de pacotes, que encapsulam os dados que estão sendo trocados. O

Record Protocol funciona realizando o tratamento dessa comunicação e na entrada

e saída de dados da camada. Recebendo os dados das camadas superiores, encap-

sula, encripta e/ou adiciona Message Authentication Codes (MACs) para garantir a

segurança, a integridade e a autenticação das mensagens e as envia ao destinatário,

que deve fazer o processo inverso, o que prova que ele (o Record Protocol) possui

independência em relação aos protocolos de aplicação.

• Alert Protocol:

Thomas (THOMAS, 2000) explica que o Alert Protocol foi desenvolvido para a troca

de mensagens que dizem respeito ao funcionamento e à transmissão de dados na

conexão, em que cada mensagem deste protocolo é composta por dois bytes, sendo

o primeiro para indicar seu caráter (que pode ser dos tipos "warning" ou "fatal").

Quando algum dos lados da comunicação recebe um alerta de caráter fatal, a trans-

missão de dados é interrompida imediatamente. O segundo byte da mensagem car-

rega o código definido referente ao alerta ou erro ocorrido.

• Change Cipher Spec:

Ainda em Thomas (THOMAS, 2000), o mais simples de todos é o Change Cipher Spec,

pois consiste em somente uma mensagem. Esta mensagem significa que a sessão será

passada para um estágio fixo e que a partir deste momento toda comunicação será

criptografada de acordo com as negociações no Hello Protocol. Esta mensagem deve

ser enviada tanto pelo cliente quanto pelo servidor. Após a troca das mensagens,

a sessão é considerada aberta e todas as mensagens de dados ou qualquer outro

protocolo serão transferidos utilizando o Record Protocol.

• Handshake Protocol:

Como vimos anteriormente, ele negocia uma conexão segura entre o cliente e o

servidor, através de uma série de passos, em que é decidido quais algoritmos vão

ser utilizados e como será feita a geração dos segredos, que são geralmente números

aleatórios.

Page 50: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

49

2.8 TLS - O sucessor do SSL

Segundo Pinheiro et al. em (PINHEIRO F. V.; VIEIRA; SILVA, 2016), em 1996, o TLS

foi o nome adotado pela IETF para desenvolver um protocolo de segurança padronizado,

baseado no SSL 3.0. Entretanto, existem algumas pequenas diferenças entre SSL e TLS.

O protocolo permanece substancialmente o mesmo (tanto é verdade que o protocolo TLS

1.0 é por vezes identificado como SSL 3.1), embora eles possuam normas diferentes. É

muito comum encontrar aplicações que suportam ambos (SSL/TLS). Os dois protocolos

não interoperam (somente um deve ser escolhido no momento da negociação), ou seja,

não trabalham juntos.

Thomas (THOMAS, 2000) explica que para projetos relacionados a servidores, espe-

cialmente de Opensource, o protocolo TLS está substituindo o SSL. Nos computadores

clientes, o protocolo SSL3 é o padrão, porém, em alguns casos, o TLS é o protocolo padrão

em computadores clientes. Havendo a necessidade pode-se utilizar o SSL para algumas

aplicações que não fazem uso do TLS.

Quando se trata de aplicações web utilizando um navegador, na maioria das vezes o

TLS funciona unilateralmente, ou seja, somente o servidor é autenticado. É feito assim

pela funcionalidade e pelo tipo de negócio de que se trata. Normalmente, é o usuário que

precisa saber da autenticidade do servidor para compras on-line. Mesmo assim, o TLS

também suporta o modo bilateral de conexão, no qual os dois lados são autenticados e

têm certeza de com quem estão "falando". Este modo é chamado de autenticação mútua.

O TLS tem a capacidade de trabalhar em portas diferentes e usa algoritmos de crip-

tografia mais fortes como o keyed-Hashing for Message Authentication Code (HMAC),

enquanto o SSL usa apenas Message Authentication Code (MAC). O TLS pode ser uti-

lizado por uma autoridade intermediária, não sendo sempre necessário recorrer à raiz de

uma Autoridade de Certificação. O protocolo TLS foi criado, como o sucessor do SSL. É

mais frequentemente usado como uma configuração nos programas de e-mail, mas, assim

como o SSL, o TLS pode ter um papel em qualquer transação cliente-servidor.

Recursos criptográficos

A biblioteca libcrypto implementa uma ampla gama de funções criptográficas relaci-

onadas, que inclui: criptografia simétrica, criptografia assimétrica (chave pública), mani-

pulação de certificados e funções hash.

Page 51: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

50

Os serviços fornecidos por estas bibliotecas são usados pelas implementações da fer-

ramenta de linha de comando OpenSSL junto com os protocolos SSL/TLS. As informa-

ções desta biblioteca também podem ser usadas por outras aplicações, como OpenSSH,

OpenPGP e outras (OPENSSL.ORG, 2018). A biblioteca OpenSSL fornece vários algorit-

mos de criptografia simétricos, dentre eles estão AES, DES, Blowfish, IDEA. A maioria

pode trabalhar em modos de blocos ou em fluxo, que são:

Modos de bloco:

• ECB (Electronic Codebook): Divisão da mensagem em blocos em que cada bloco é

criptografado separadamente.

• CBC (Chiper Block Chaining): Para cada bloco de texto simples é aplicada uma

função XOR junto com o bloco cifrado anterior antes do texto ser criptografado.

Modos de fluxo:

• CFB-x (Chiper Feedback): É cifrado o texto anterior e usado como entrada para

o algoritmo criptográfico de forma a produzir uma saída pseudo-aleatória, que é o

XOR com o texto claro para produzir a próxima unidade de texto cifrado.

• OFB (Output Feedback): Tratada a mensagem como um fluxo de bits, a saída da

cifra é adicionada à mensagem por XOR, pode ser computada com antecedência,

pois a saída da cifra é a realimentação.

• CTR (Counter Mode): Cada bloco de texto claro é XOR com um contador cripto-

grafado.

O modo CFB pode operar em segmentos de 1 bit, 8 bits ou igual ao tamanho do bloco

da cifra de bloco subsequente. A biblioteca libcrypto proporciona API’s que permitem que

essa codificações sejam utilizadas para encriptar e decriptar os Dados.

Page 52: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

51

3 Algoritmo Papílio Versátil

Este capítulo apresenta o algoritmo de criptografia que será implementado, junta-

mente com suas evoluções, que serão descritas em forma cronológica. O algoritmo Papílio

em sua primeira versão, desenvolvido por (RAMOS, 2002) abordando suas característi-

cas. Em seguida sua evolução o PapílioXP, de (ARAÚJO, 2003), com suas propriedades

criptográficas. O Papílio Versátil, desenvolvido por (NETO, 2009) que, possui todas a pro-

priedades do seu antecessor, porém com um tamanho de chave variável, assim como a

construção de subchaves.

3.1 Papílio Original

O algoritmo de criptografia Papílio (Original) proposto por (RAMOS, 2002) faz o uso

do algoritmo Viterbi Modificado como função F do codificador Feistel, para alcançar os

princípios de difusão e confusão e avalanche do codificador Feistel. Além da função F, o

Viterbi Modificado também é utilizado para geração das subchaves.

O algoritmo Papílio realiza a criptografia do texto através de cifras de blocos, em

que ele transforma cada bloco de entrada em um bloco correspondente de saída. Essa

entrada se divide em dois argumentos, o texto que deseja cifrar e a chave criptográfica. Já

o processo de decriptação é bastante similar, diferindo apenas em dois aspectos: o texto

de entrada é um texto anteriormente cifrado pelo Papílio e a Rede de Feistel processa da

última camada para a primeira para recuperar o texto original.

Algumas características peculiares do Papílio, já que ele é baseado na cifra de bloco

Feistel, são os tamanhos dos blocos de entrada que possuem 8 Bytes (64 bits) juntamente

com a chave, que possui tamanho de 16 Bytes (128 bits), e um processo de cifragem com

16 rodadas. O algoritmo Papílio tem a mesma estrutura de uma cifra Feistel. A Figura

13 apresenta uma volta (cilco) do Papílio, em que F é o algoritmo Viterbi Modificado, e

a geração de subchave.

Page 53: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

52

Figura 13: Representação de um volta do Algoritmo Papílio.Fonte: (RAMOS, 2002).

Algumas Características do Algoritmo Papílio

De acordo com (RAMOS, 2002) as características do algoritmo proposto são: tamanho

do bloco, tamanho da chave, número de voltas, geração de subchaves e função utilizada.

Tamanho do bloco

Ramos, (RAMOS, 2002), explica que, com o objetivo de evitar a análise estatística por

parte de um intruso, bem como evitar complexidade de implementação, o tamanho do

bloco para codificação foi definido em 64-bits. Este tamanho é reconhecido como sufici-

entemente forte em (STALLINGS, 2008) e é utilizado nos seguintes sistemas criptográficos,

DES, Blowfish, IDEA.

Tamanho da chave

Como alegado por (RAMOS, 2002), a segurança de um algoritmo convencional depende

do segredo da chave, e não do algoritmo. Os tamanhos das chaves criptográficas são medi-

das em bit e a dificuldade de tentar todas as chaves possíveis cresce exponencialmente com

o número de bits usados. Para cada bit adicionado à chave, o número possível de chaves

é dobrado; adicionando 10 bits, aumenta aos milhares (210) o número de chaves possíveis,

lembrando que quanto maior o tamanho da chave, maior é a segurança, porém a veloci-

dade de codificar ou decodificar diminui, tendo uma relação inversamente proporcional.

O que deu o tamanho de chave de 128 bits para o algoritmo.

Page 54: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

53

Número de voltas

Ramos,(RAMOS, 2002), explica que, visando dificultar a criptoanálise, adotou-se a

quantidade de 16 voltas pois, mesmo que a tabela de codificação não ofereça uma segu-

rança adequada, uma maior quantidade de voltas dificulta a execução da criptoanálise.

O codificador Feistel utiliza 16 voltas, pois a segurança oferecida por apenas uma volta é

inadequada.

Geração de subchaves

Esse algoritmo utiliza uma chave de 128-bits, a qual gera 16 subchaves. As subchaves

criadas são armazenadas temporariamente em uma matriz até que o processo de codifi-

cação do bloco seja finalizado.

Viterbi Modificado

O algoritmo Viterbi Modificado adota a Codificação Convolucional e a Decodifica-

ção Viterbi utilizando os seguintes componentes básicos: registradores de deslocamento

e módulos somadores, em que determinam-se os polinômios geradores do par de bits da

saída. Segundo (RAMOS, 2002) o objetivo do algoritmo Viterbi Modificado é ampliar o

espaço de decodificação, a fim de possibilitar a geração de tabelas que serão utilizadas na

criptografia de dados e tratar qualquer fluxo de bits de entrada.

Ainda em (RAMOS, 2002), a execução do algoritmo Viterbi Modificado inicia-se no

estado 0 e executa o algoritmo Viterbi, até que um rótulo de entrada não seja tratável

no estado atual. A partir da tabela gerada pela codificação convolucional, identifica-se os

rótulos que poderão ser tratados por cada estado, acrescentando ao novo fluxo de saída a

informação 0.

Por exemplo, na Tabela 3, os pares 00 e 11 são tratados pelos estados 0 e 1. Neste caso,

os fluxos de saída dos respectivos pares receberão a informação 0 na saída S1, enquanto

a saída S0 receberá o resultado do algoritmo Viterbi.

Page 55: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

54

Fluxo inicial: 00 11 00 00 01 Os rótulos não tratáveis estão sublinha-dos

Fluxo de saída S0 0 1 x x x Incerto após o segundo rótulo devido àintratabilidade

Codificação Convolucional 10 11 Estado final da Codificação convoluci-onal é o estado 0 (zero)

Decodificação Viterbi - - 0 0 Usa-se como estado inicial o estadoatual

Fluxo de saída S1 0 1 0 0 x Considera-se apenas o primeiro rótulode tamanho 1 bit. Continua-se a aplicaro algoritmo Viterbi usando-se como es-tado inicial o estado final da convolução(estado zero)

Codificação Convolucional 00 11 Estado final da Codificação convoluci-onal é o estado 2 (dois)

Decodificação Viterbi - - - - - 0 1 Usa-se como estado inicial o estadoatual

Fluxo de saída S0 0 1 0 0 0 Considera-se apenas o primeiro rótulode tamanho 1 bit. Continua-se a aplicaro algoritmo Viterbi usando-se como es-tado inicial o estado final da convolução(estado dois)

Fluxo de saída S1 0 0 1 0 1 Igual a 1 (um) apenas onde os rótulosnão são tratáveis

Tabela 3: Exemplo de execução do algoritmo Viterbi Modificado.Fonte: (RAMOS, 2002).

Na Tabela 3, é descrito o processo de execução do algoritmo Viterbi Modificado,

considerando uma taxa de 1/2, descrevendo, segundo (RAMOS, 2002): com o fluxo de bits

0011000001, observa-se que os dois primeiros rótulos de dois bits podem ser tratados com

o algoritmo Viterbi iniciando-se no estado 0 (zero). O terceiro rótulo, entretanto, não pode

ser tratado, pois o estado atual, no momento de sua codificação, é o estado 2 (dois).

O processo de codificação convolucional do rótulo não tratável resulta nos rótulos

adicionais 10 e 11 e no estado final 0 (zero). O quarto rótulo é tratável, usando-se o

algoritmo Viterbi, pelo estado final do processo de codificação convolucional, resultando,

após a aplicação do algoritmo de viterbi, o estado atual 0 (zero).

O quinto rótulo não é tratável por este estado. Repete-se então o processo de codifi-

cação convolucional, seguido de decodificação Viterbi, considerando-se apenas o primeiro

rótulo (de tamanho 1) da saída da decodificação Viterbi. Os fluxos de bit S0 e S1 são

independentes. Ao final da codificação os dois fluxos são concatenados, de forma a gerar

um fluxo de bit de mesmo tamanho do original.

Page 56: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

55

Função utilizada

Em geral, os sistemas de criptografia utilizam diferentes funções para conseguirem

uma boa difusão e uma boa confusão. No algoritmo proposto, buscam-se esses elementos

através da função de substituição que utiliza as tabelas geradas a partir do algoritmo

Viterbi Modificado (RAMOS, 2002). O Papílio deriva da estrutura clássica do codificador

Feistel, conforme a Figura 14.

Figura 14: Estrutura do codificador.Fonte: (RAMOS, 2002).

Page 57: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

56

OViterbi Modificado, baseado no algoritmo Viterbi com os polinômios e os parâmetros

(n/s=1/2,Q=3, m=2), pode ser simplificado usando-se a Tabela 4.

Estado Atual Entrada S0 S1 Próximo estado

0

00 0 0 001 0 1 210 1 1 111 1 0 2

1

00 1 0 201 0 1 210 1 1 111 0 0 0

2

00 0 1 001 1 0 310 0 0 111 1 1 3

3

00 0 1 001 0 0 110 1 0 311 1 0 3

Tabela 4: Resultado do algoritmo desenvolvido.Fonte:(RAMOS, 2002).

A descrição feita por (RAMOS, 2002) sobre o funcionamento do codificador é a seguinte:

a função F executa inicialmente um ou-exclusivo (XOR) bit a bit da subchave SC1 de

32 bits com o bloco do lado direito D1 de 32 bits. O resultado do ou-exclusivo passa

através de uma função de substituição que produz duas saídas de 16 bits (S0 e S1). Os

dois fluxos de saída, S0 e S1, são concatenados gerando um bloco de 32 bits. Executa-se

um ou-exclusivo do bloco de saída da função de substituição com o bloco E1. O papel da

função F é tornar o texto codificado dependente da chave e do texto claro, bem como fazer

com que cada bit do texto claro e da chave influencie em muitos bits do texto codificado.

3.2 PapilioXP

Em (ARAÚJO, 2003), foi realizado um estudo visando uma criptografia mais forte para

o Papílio, comparando com os melhores algoritmos existentes naquele ano, aumentando

consideravelmente as formas de encriptação de um texto. Segundo Araújo, a proposta

Page 58: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

57

para PapílioXP é que se use um conjunto de máquinas de Papílio, mais precisamente 8

máquinas, geradas a partir dos polinômios eleitos pelo programa “torneio”.

Essas máquinas são escolhidas a cada rodada da rede de Feistel, utilizando uma função

de dispersão dupla. A razão para o uso de uma função de dispersão dupla é que elas

retornam índices que são equiprováveis para um vasto conjunto de entradas. Lembrando

que a estrutura de Feistel sempre garante o retorno deste semibloco a cada rodada, o

que significa que o algoritmo sempre acertará a máquina de estados que será usada no

processo de encriptação, e sempre acertará as máquinas para o processo de decriptação.

Outra modificação é o estado inicial que a máquina de estados assume na função

de substituição Viterbi Modificado. A proposta é que se aplique também uma função de

dispersão para se determinar o estado inicial da função Viterbi Modificado. A função de

dispersão utilizada é a mesma para a seleção das máquinas de estado nas rodadas da

rede de Feistel que usa como entradas o bloco que será processado pela função Viterbi

Modificado e um número inteiro como constante para a aplicação.

Em suma, a primeira modificação no algoritmo foi a utilização de blocos de 16 Bytes

(128 bits), diferente do Papílio de Ramos (RAMOS, 2002), que utilizava apenas blocos de

8 bytes (64 bits). Uma segunda modificação foi o aumento no número de máquinas de

estado, com o algoritmo Viterbi Modificado utilizando como função de substituição em

cada rodada, as quais são atribuídas (selecionadas) em função do sub-bloco e da subchave

recebida como entrada enquanto o Papílio original utiliza apenas uma máquina de estados

e um estado inicial fixo em todo o processo. Para comprovar o ganho de performance do

PapílioXP em relação à abordagem tradicional do Papílio, (ARAÚJO, 2003) confeccionou

um programa que mensura a avalanche a cada rodada, comparando os blocos gerados pela

codificação de um bloco e do mesmo bloco alterado em um bit no início.

O valor mostrado no gráfico, conforme Figura 15, por rodada, é o somatório das

distâncias de Hamming entre todos os blocos possíveis gerados alterando-se um bit (são

64 possibilidades) e o bloco original. O programa também mede o Hamming Interno, que

é o percentual de bits alterados com relação ao bloco de entrada a cada rodada, não se

fazendo alteração alguma no bloco de entrada. Sendo assim, o Papílio XP possui maior

proteção contra a criptoanálise, pois a escolha da máquina depende do texto claro e das

chaves utilizadas, que são informações que não estão disponíveis para um criptoanalista.

Page 59: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

58

Figura 15: Papílio (tradicional) x PapílioXP na avalanche.Fonte: (ARAÚJO, 2003).

Com essas modificações realizadas por (ARAÚJO, 2003), houve o sucesso e realizaram

a primeira publicação sobre o Algoritmo, em (ARAÚJO et al., 2005) na qual, eles descrevem

o Papílio como um “[...] é um algoritmo de criptografia Feistel onde o processo codificador

(função F) é baseado no algoritmo Viterbi. O algoritmo de Viterbi foi proposto como uma

solução para decodificar códigos convolucionais. Existem vários parâmetros que definem

o código de convolução e o algoritmo de Viterbi; um deles é o polinômio gerador. Para

usar o algoritmo de Viterbi em criptografia, é necessário fazer algumas modificações. O

proposto não depende dos parâmetros de Viterbi nem dos parâmetros de convolução”.

Análise das Propriedades Criptográficas do PapílioXP

Para tornar o algoritmo Papílio mais eficiente, foi necessário selecionar um conjunto

de polinômios que confiram a Papílio bons índices criptográficos, contribuindo direta-

mente para tornar a criptografia produzida por ele mais forte. Para atingir os objetivos

de avalanche, confusão e difusão, os polinômios são fatores determinantes no processo de

encriptação, o que influencia diretamente nos valores de índices dos objetivos.

Avalanche

Sobre o critério da Avalanche no Papílio, em (ARAÚJO et al., 2005) utilizou-se das

médias das distâncias de Hamming entre o bloco de texto encriptado a partir de um bloco

Page 60: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

59

de texto claro e o bloco proveniente da encriptação do bloco de texto claro alterado em

um bit em todas as possibilidades para calcular o nível de Avalanche.

Difusão

Em relação à difusão, ou destruição da informação estatística dos caracteres do texto

encriptado, foi calculado o desvio padrão das frequências do conjunto de caracteres do

texto cifrado.

Confusão

Na confusão, que é a influência que um bit da chave ou do texto claro tem na formação

do criptograma, foi usada a média das distâncias Euclidianas entre o texto encriptado do

texto claro com uma chave e todos os textos resultantes da encriptação do texto claro e

da chave alterada em um bit.

3.3 Papílio Versátil

Algoritmo desenvolvido em (NETO, 2009), é uma versão de outro algoritmo anterior

do papílio versátil, o XP de (ARAÚJO et al., 2005). Como o próprio nome diz, busca maior

versatilidade e segurança contra a criptoanálise. Ele processa blocos com o tamanho de

16 bytes (128bits) igual ao algoritmo que lhe deu a base. Entretanto, diferente do Papílio

XP, o Papílio Versátil possibilita a utilização de chaves de tamanho variável, alterando a

rigidez e possibilitando uso de chaves com os tamanhos entre 16 bytes (128 bits) e 128

bytes (1024 bits).

Segundo (NETO, 2009) explica que houve alteração no modo como são construídas

as subchaves do Papílio. Considerando que são processado blocos de 16 Bytes (128 bits),

devem-se gerar subchaves de tamanho de 8 Bytes (64 bits), tendo em vista a utilização

das mesmas na operação XOR com a metade direita do bloco da rodada, que contém 8

Bytes (64 bits).

O algoritmo de construção das subchaves consiste em formar blocos de 16 Bytes (128

bits) a partir da chave, de modo que estes possam servir de entrada para a função Viterbi

Modificado que, a partir desta entrada, gera duas subchaves de 8 Bytes (64 bits) cada.

Como a quantidade máxima de rodadas é igual a 16, devem-se ser formados 8 blocos de 16

Bytes (128 bits) a partir da chave, de modo que estes, após serem processados pela função

Page 61: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

60

Viterbi modificado, gerem as 16 subchaves de 8 bytes (64 bits). A Figura 16 demonstra

esquematicamente como ocorre a geração das subchaves no Papílio Versátil.

Figura 16: Geração de Subchaves no Papílio Versátil.Fonte: (NETO, 2009).

O semibloco do lado direito não é modificado durante o processo da rodada, apenas

ocorre uma troca (permuta), na qual o mesmo passa a ser o bloco do lado esquerdo

na próxima rodada. Com isso, na descriptografia, esse mesmo semibloco é recuperado

normalmente. Sem a necessidade de guardar informação adicional no texto cifrado. Essa é

a ideia principal para que seja possível a variação de rodadas no algoritmo, como também

a variação das subchaves.

No Papílio Versátil, em (NETO, 2009), as subchaves alocadas em cada rodada são

escolhidas aplicando-se a função de dispersão dupla1. Assim, tal função irá retornar um

valor na faixa de 1 a 16, indicando qual é a subchave que será utilizada na rodada corrente.

Com isso, foi possível promover ao Papílio uma maior resistência contra ataques do tipo

de criptoanálise diferencial.

3.4 Criptoanálise Diferencial do Papílio

Para analisar a complexidade e a força contra ataques ao Papílio, Oliveira, (FILHO,

2010), aplicou a técnica de Criptoanálise Diferencial, introduzida por Biham e Shamir,

sobre o algoritmo Papílio, a fim de testar e, principalmente, provar sua relevância em

relação a outras cifras de blocos como DES, Blow-Fish e FEAL-N(X).1A função de dispersão dupla é composta por duas funções de dispersão, tendo como finalidade fornecer

um índice a partir de uma determinada entrada, que será utilizada para a escolha da máquina de estados.

Page 62: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

61

O autor realizou uma análise das diferenças entre os pares de textos claros e a diferença

entre as suas respectivas cifras, em busca de padrões que auxiliarão nas descobertas das

sub chaves e, consequentemente, na descoberta da chave mestra, na qual está a segurança

da cifra. Estas diferenças são obtidas através de operações XOR.

Oliveira conclui que o Papílio Original (RAMOS, 2002) é uma cifra forte, mas com res-

salvas em relação ao tamanho do bloco de entrada e ao tamanho das subchaves utilizadas

por ele. Pois a chave é o principal mecanismo de segurança de uma cifra. Entretanto o

Papílio Original é quebrável, assim como as demais cifras testadas em (FILHO, 2010). A

criptoanálise diferencial demonstrou isso, descobrindo ou mesmo reduzindo o intervalo de

possíveis sub chaves para que seja possível sua quebra para as cifras DES, Blow-Fish e

FEAL-N(X).

Considerando que a versão utilizada em (FILHO, 2010) foi o Papílio Original e que

as versões posteriores aumentaram sua complexidade (aumento no tamanho da chave,

na variação do números de ciclos variáveis e do tamanho das chaves etc.), assim como

promoveram mudanças que melhoram o nível de segurança do Papílio, é possível destacar

que esta possibilidade de quebra ou descoberta de chaves também foi devidamente tratada

durante a evolução do Papílio.

Page 63: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

62

4 Papílio no OpenSSL

A implementação segura de um algoritmo criptográfico não é uma tarefa trivial, nem

mesmo para os programadores mais experientes, pois requer um conhecimento cuidadoso

não apenas do próprio algoritmo, mas também da arquitetura alvo. Com isso, a integração

do algoritmo na biblioteca OpenSSL é realizada através de linhas de código. A biblioteca

OpenSSL pode fornecer ao Papílio uma maior visibilidade e condições de uso por todos

os tipos de usuários, além de ser mais uma opção para a biblioteca SSL.

4.1 Problemas e Desafios de Segurança Criptográfica

Os projetos com relação à segurança possuem alguns problemas e desafios de segu-

rança, que são clássicos. Esses desafios orientam o pesquisador para que se tenha uma

base e metas para definir se seu algoritmo obtém as soluções. Tais problemas podem ser

subdividos em:

A) Questões de segurança de dados: A proteção de dados desempenha um papel vital

na computação em nuvem; no entanto, ela se transforma em um empreendimento de

primeira classe, enquanto os clientes da SaaS devem depender de seus fornecedores

para garantir a segurança adequada. O provedor SaaS é o único responsável pelas

informações ao mesmo tempo em que está sendo processado ou salvo (PRAKASH

G. L.; SINGH, 2014); (BERTINO, 2016).

B) Questões de privacidade: Quando os dados são armazenados na nuvem, deve ha-

ver alguma medida de segurança: eles são acessíveis apenas por esse usuário com

um processo de autenticação rigoroso. Deve ser restrito para qualquer usuário não

autorizado alcançar os dados confidenciais (PRAKASH G. L.; SINGH, 2014).

C) Questões de confidencialidade dos dados: Os clientes da nuvem precisam garantir

que seus dados sejam mantidos exclusivos para pessoas de fora, juntamente com a

empresa de nuvem e seus concorrentes de capacidade (KAUR; KAUR, 2015).

Page 64: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

63

D) Problemas de acessibilidade: O acesso a programas pela Internet via navegador de

rede torna o acesso a partir de qualquer dispositivo de rede, o que inclui sistemas

públicos de computadores e dispositivos móveis. No entanto, expõe adicionalmente

o fornecedor a perigos adicionais de segurança (KAUR; KAUR, 2015).

Tendo em vista que todos os itens foram alcançados, pode-se considerar que o algo-

ritmo é seguro e eficiente. Vale ressaltar que esses problemas e desafios não são vistos

apenas para a segurança em nuvem, mas sim para a segurança como um todo.

4.2 Cenário

Em um ambiente virtual, foi desenvolvido o cenário específico para simular a comuni-

cação cliente/servidor, através de uma aplicação que utilize o protocolo SSL/TLS, ambos

com a versão integrada.

Figura 17: Cenário estabelecido para a testes.Fonte: Elaborada pelo autor (2019).

Essas máquinas foram desenvolvidas em um servidor PowerEdge R740 DELL, com

um hardware de 64 gigas de memória e processadores escaláveis Intel R© Xeon R© de 2a

geração com até 28 núcleos por processador. As máquinas virtuais possuem 4 gigas de

memória e 4 núcleos.

Page 65: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

64

Figura 18: Servidor ReginaLAB.Fonte: Elaborada pelo autor (2019).

Além de utilizar as máquinas virtuais, testes são realizados do host utilizado no labo-

ratório, em que também tenho máquinas virtuais para testes, a fim de utilizar o OpenSSL

sem a implementação do Papílio. Com a ajuda da ferramenta Wireshark, pacotes de tráfe-

gos foram capturados, tornando possível a análise dos pacotes e constatando a integração

do Papílio ao protocolo SSL. O conteúdo capturado pelo Wireshark será utilizado como

base de dados para uma análise comparativa do Papílio com as principais cifras de bloco

(Camellia, DES, AES), com o intuito de melhorar o nível de segurança do OpenSSL.

4.3 Metodologia do Desenvolvimento

De acordo com os passos que foram definidos na qualificação, base para o desenvol-

vimento desta dissertação, as seguintes etapas foram formuladas a fim de desenvolver a

conclusão do trabalho.

Etapa 1: Estudo para compreender e analisar as versões do algoritmo Papílio, para que, as-

sim, ocorra a escolha da versão mais indicada para a integração com a biblioteca

OpenSSL.

Etapa 2: Realizar o levantamento bibliográfico acerca do OpenSSL em seu portfólio (OPENSSL.ORG,

2018) e no seu Github (GITHUB, 2018), e sobre as implementações realizadas de al-

goritmos no kit de ferramentas OpenSSL.

Page 66: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

65

Etapa 3: Escolha da versão do OpenSSL para dar início à codificação, através de um estudo

via (GITHUB, 2018), para entender os vários modelos e tipos de implementações,

além das correções e modificações do protocolo que são necessárias.

Etapa 4: Realizar a implementação do algoritmo Papílio na biblioteca OpenSSL, de acordo

com o modelo de (JURKIEWICZ; NIEMIEC, 2016) e a RFC (KATO; KANDA; KANNO,

2010), modificando e inserindo a codificação nos arquivos e diretórios do kit de

ferramentas e da biblioteca, para que possa, assim, ocorrer de fato a inclusão do

Algoritmo no OpenSSL, após sua compilação.

Etapa 5: Desenvolver o ambiente para testes, com as máquinas virtuais, aplicações cliente/-

servidor com a utilização do OpenSSL e a execução do Wisreshark, para que possa-

mos validar e afirmar que o algoritmo está funcionando como se fosse um algoritmo

padrão da biblioteca.

Etapa 6: Realizar uma análise comparativa do Papílio Versátil em relação as outras cifras

simétricas de bloco do OpenSSL via o ambiente de testes descrito na etapa anterior.

4.4 Etapas Desenvolvidas

Conforme a metodologia apresentada na seção 3.2, serão descritas nesta seção as

etapas realizadas, para que seja possível o entendimento do processo de implementação

de uma cifra criptográfica no OpenSSL.

Na etapa 1, conforme a metodologia apresentada e concluída, foi possível realizar

o levantamento bibliográfico do algoritmo Papílio e suas derivações ao longo dos traba-

lhos desenvolvidos por (RAMOS, 2002), (ARAÚJO, 2003) e (NETO, 2009). Assim como em

(FILHO, 2010), (FILHO et al., 2013), (FILHO, 2014) e (FILHO et al., 2017), em que os au-

tores abordam o algoritmo Papílio em outras vertentes, como criptoanálise diferencial do

Papílio e Algoritmo Papílio como Método de Proteção de Templates para Aumentar a

Segurança em Sistemas de Identificação Biométricos.

Na etapa 2, o levantamento bibliográfico sobre o OpenSSL, realizado através de

estudos do OpenSSL (OPENSSL.ORG, 2018) e do sistema de gerenciamento de projetos e

versões de códigos, assim como uma plataforma de rede social criada para desenvolvedores

(GITHUB, 2018).

As etapas 3 e 4 tratam sobre a escolha da versão do OpenSSL e da implementação

do algoritmo Papílio Versátil, respectivamente. Após a escolha da versão do OpenSSL a

Page 67: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

66

ser utilizada, foi necessário a realização dos procedimentos a seguir:

• Inicialmente, antes de compilar o diretório OpenSSL, é necessário anexar o diretório

do /papilio no subdiretório /crypto, em que estão localizados todos os algoritmos

utilizados pelo OpenSSL, conforme pode ser visto na Figura 19.

Figura 19: Destaque do subdiretório do Papílio.Fonte: Elaborada pelo autor (2019).

• Outro procedimento necessário foi a adequação do algoritmo para que o mesmo

trabalhasse em harmonia com o OpenSSL. Neste caso, o algoritmo de criptografia

Camellia foi tomado como modelo para a realização dessa etapa. Por exemplo, todas

as funções ECB, CBC, CFB, CBC e OFB, que estavam apenas em um único arquivo,

tiveram que ter seus próprios arquivos.

Figura 20: Listagem do subdiretório Papílio.Fonte: Elaborada pelo autor (2019).

• No diretório principal do openssl, no arquivo Makefile, foi necessário definir as re-

gras para a compilação do Papílio Versátil. Na linha 151, conforme Figura 21, são

definidos os diretórios dos algoritmos de criptografia.

Page 68: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

67

Figura 21: Implementação do arquivo Makefile.Fonte: Elaborada pelo autor (2019).

• Ainda no mesmo diretório no arquivo config, na linha 906, estão listados os algo-

ritmos, em que adicionamos o papílio. Nesta linha, estão as configurações para o

suporte dos engines, que são um suporte embutido para aceleração criptográfica.

Figura 22: Suporte engine.Fonte: Elaborada pelo autor (2019).

• No arquivo Configure, as implementações do papilio ocorrem em várias linhas. Esse

arquivo possui instruções para a criação e configuração de diretórios. Os arquivos

Configure e a config são utilizados para ajustar o processo de compilação e instalação

por meio de opções.

• A inclusão do arquivo e_papilio no diretório /crypto/evp. Este arquivo deve ser

criado manualmente. Ele contém chamadas de funções EVP de alto nível para fun-

ções de nível inferior que implementam um novo algoritmo, definido no arquivo de

cabeçalho principal (papilio.h).

Page 69: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

68

Figura 23: Trecho de código do arquivo e_papilio.Fonte: Elaborada pelo autor (2019).

• Após essa etapa concluída, as próximas modificações ocorrem no diretório cryp-

to/objects. Esse diretório contém todas as informações relacionadas ao modelo de

objeto da biblioteca. Os arquivos que contêm referências ao PAPILIO recém im-

plementado são obj_dat.h, obj_mac.c e obj_mac.num. Esses arquivos são gerados

automaticamente pelo comando através do comando make, com base nos objetos

definidos no arquivo objects.txt.

• Em seguida, as modificações ocorrem no diretório ssl/. Para tornar a nova cifra

disponível nas conexões SSL/TLS, devem haver várias modificações aplicadas na

biblioteca libssl. Os novos ciphersuites, contendo a nova cifra, devem ser criados e

registrados. As ciphersuites nomeiam combinações de algoritmos de autenticação,

criptografia e código de autenticação de mensagens (MAC) usados para negociar

as configurações de segurança de uma conexão de rede, que utiliza os protocolos

Transport Layer Security (TLS) ou Secure Sockets Layer (SSL).

• O próximo arquivo que precisa ser modificado é o arquivo de cabeçalho ssl/ssl.h, que

contém várias definições constantes. Ao implementar uma nova cifra, a constante

que especifica seu nome precisa ser definida na linha 320:

#define SSL_TXT_PAPILIO "PAPILIO"

Este mesmo arquivo contém a constante #define SSL_DEFAULT_CIPHER_LIST,

que define a ordem de preferência padrão dos ciphersuites. A lista de cifras consiste

em uma ou mais sequências de cifras separadas por dois pontos, sendo capaz de

representar uma lista de conjuntos de cifras que contém um determinado algoritmo

ou conjuntos de cifras de um determinado tipo.

Page 70: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

69

• Outra configuração importante que ocorre no mesmo arquivo ssl/ssl.h é referente à

diretiva CipherSuites, que pode ser usada a qualquer momento para classificar a lista

de codificações, em ordem de comprimento da chave do algoritmo de criptografia.

A constante da lista de cifras padrão, na linha 344, é:

#define SSL_DEFAULT_CIPHER_LIST

"ALL:!EXPORT:!LOW:!aNULL:!eNULL:!SSLv2"

A modificação dessa diretiva influencia diretamente na compatibilidade binária, o

que interfere na comunicação direta entre máquinas que não possuem o OpenSSL

com o papílio implementado. Essa lista é classificada na ordem do comprimento da

chave do algoritmo de criptografia. Tal comprimento por padrão da biblioteca é de

chaves com 256 bits.

No teste atual, como o algoritmo Papílio versátil, segundo (NETO, 2009) pode utilizar

chaves de tamanhos variáveis, entre 16 Bytes (128 bits) e 128 Bytes (1024 bits),

o tamanho da chave foi alterado para 320 bits. Os outros métodos seguiram os

tamanhos padrões de 128 e 192 bits, para que na chamada da diretiva Cipher Suite

ele seja mostrado como uma possível cifra.

• O próximo arquivo que deve ser modificado ao implementar uma nova cifra é o ar-

quivo ssl/ssl_algs.c. Este arquivo contém a função SSL_library_init (void), que

registra todas as cifras e resumos. Faz-se necessário adicionar chamadas, formando

uma nova cifra, nas linhas 109 e 112.

Figura 24: Registro da cifra.Fonte: Elaborada pelo autor (2019).

• Várias modificações devem ser aplicadas também no arquivo ssl/ssl_ciph.c. Pri-

meiro, esse arquivo contém constantes que definem os IDs internos para cada al-

Page 71: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

70

goritmo de criptografia usado no SSL/TLS. É necessário adicionar IDs para cada

chave desses novos algoritmos, nas linhas 167 e 168.

Figura 25: Novas ID’s.Fonte: Elaborada pelo autor (2019).

• Em seguida, o arquivo ssl/ssl_ciph.c contém a matriz SSL_CIPHER cipher_aliases.

O novo algoritmo precisa ser implementado através das linhas 320, 321, 322 e 323,

como podemos ver a seguir:

Figura 26: Implementação na matriz Aliases.Fonte: Elaborada pelo autor (2019).

O arquivo também contém a implementação da função ssl_load_ciphers(void). As

chamadas que carregam uma nova cifra precisam ser adicionadas a esta função, nas

linhas 431 a 434.

Page 72: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

71

Figura 27: Chamada do Papílio.Fonte: Elaborada pelo autor (2019).

• O último arquivo do código libssl que requer modificações é o arquivo de cabeçalho

ssl/ssl_locl.h. Começando na linha 357, este arquivo contém definições dos bits que

são utilizados para criptografar e identificar as opções de utilização pelos arquivos

internos da biblioteca. É necessário adicionar uma máscara de bits identificando

uma nova cifra.

Figura 28: Identificação da biblioteca.Fonte: Elaborada pelo autor (2019).

Page 73: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

72

Na etapa 5, que diz respeito no desenvolvimento de máquinas virtuais, todas as

máquinas estão em funcionamento, realizam a comunicação através de máquinas virtuais

criadas no servidor, conforme visto na seção 4.2. A utilização da máquina, que fazemos

uso no laboratório, também deve ser levada em conta, pois, com ela, são realizados testes

e trocas de mensagens e de envios de arquivos, assim como outras máquinas virtuais que

se encontram na mesma.

O servidor Papílio possui o apache2 configurado, para que as solicitações e as requisi-

ções TLSv1.2 possam ser capturadas através do programa de análise de redes Wireshark.

Esse mesmo servidor possui o serviço FTP, para que a comunicação seja realizada de

maneira ponto-a-ponto.

Figura 29: Página web - www.papilio.com.br.Fonte: Elaborada pelo autor (2019).

E, por fim, na etapa 6, há a realização da análise comparativa do Papílio Versá-

til com outras cifras da biblioteca OpenSSL. Após toda a implementação, a realização

de testes são imprescindíveis para a validação deste trabalho. Com base nos trabalhos

de (GURPREET; SUPRIYA, 2013), (DAR; MITTAL; KUMAR, 2014), (TRIPATHI; AGRAWAL,

2014),(KAUR; KAUR, 2015), (SEMWAL; SHARMA, 2017), (WAHID et al., 2018) e (YUSUFZAI

et al., 2019), os quais realizam comparações de algoritmos criptográficos para a utilização

em computação em nuvem. Eles também podem ser utilizados em IoT, que será abordada

no capítulo 5, a seguir.

Após a integração, testes foram realizados para comparar o desempenho do algoritmo

com relação às outras cifras, e para também verificar a capacidade do Papílio em relação

ao tempo de execução, ao desempenho e ao nível de segurança, quando o mesmo é utilizado

Page 74: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

73

via protocolo SSL/TLS na transmissão das informações. Acredita-se que essa comparação

desenvolva uma solução mais acadêmica para esta dissertação.

Todas essas etapas relacionadas à implementação do Papílio ao OpenSSL serão des-

critas com mais detalhes no repositório GitHub (LOPES, 2019), e todas as modificações

podem ser vista no arquivo “Diff_papilio.txt” que se encontra no mesmo repositório.

Page 75: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

74

5 Experimentos

Este capítulo apresenta os testes da versão da biblioteca OpenSSL contendo o Papílio

Versátil. A explicação da arquitetura para desenvolvimento de testes é apresentada. O

teste de compatibilidade são apresentados e informam os requisitos para o funcionamento.

Em seguida, os testes de desempenho são apresentados, assim como a conectividade com

SSL/TLS. O capítulo é finalizado com um comparativo entre os algoritmos assimétricos

da biblioteca OpenSSL.

5.1 Arquitetura de Desenvolvimento e de Testes

Para validação dos experimentos, recorreu-se à utilização de máquinas virtuais, em

que o algoritmo foi implementado juntamente com os outros aplicativos que viabilizam a

realização de testes, quanto à eficiência de proteção. Para avaliação da eficiência cripto-

gráfica, será codificada uma texto complexo cujos dados criptografados serão processados

de acordo as medidas de criptografia clássicas, conforme mencionado na seção 4.2.

Essas máquinas foram desenvolvidas em um servidor PowerEdge R740 com um hard-

ware de 64 gigas de memória e processadores escaláveis Intel R© Xeon R© de 2a geração

com até 28 núcleos por processador. As máquinas virtuais possuem 8 gigas de memória

e 4 núcleos, como visto anteriormente na Figura 18. Com a ajuda do coletor de pacotes

Wireshark, será possível validar o uso do algoritmo e capturar o tráfego da rede simulada

entre as duas máquinas virtuais, de acordo com o cenário descrito na Figura 17.

5.2 Compatibilidade

Após a instalação da versão do OpenSSL implementada com o Papílio, verificamos

se a compilação foi realizada sem erros, e se foram gerados os arquivos de cabeçalhos.

Para saber se o algoritmo foi implementado, executamos o código “openssl ciphers -v”,

Page 76: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

75

que apresenta a saída conforme as imagens a seguir.

Figura 30: Saída do comando ciphers -v.Fonte: Elaborada pelo autor (2019).

A Figura 30, mostra que a cifra está disponível para uso normal, assim como todas as

outras cifras da biblioteca OpenSSL, o que indica que a compilação teve êxito. O OpenSSL

é a biblioteca criptográfica mais comumente usada atualmente, especialmente no ambiente

Linux. Além disso, o kit de ferramentas OpenVPN usa o OpenSSL como um back-end

criptográfico. A maioria dos aplicativos usa o OpenSSL como uma biblioteca dinâmica.

No ambiente Windows, os arquivos libcrypto e biblioteca dinâmica (* .dll) geralmente

são distribuídos junto com o aplicativo. Os arquivos DLL geralmente estão localizados

no diretório principal do aplicativo. Seus nomes são, respectivamente, libeay32.dll e ss-

leay32.dll para o tipo 1.0 e libeay32.dll e libssl32.dll para a tipo 1.0.0.

No ambiente Linux, no entanto, a maioria dos aplicativos usa bibliotecas comparti-

lhadas em todo o sistema, localizadas em /lib ou em um diretório de sistema similar. Os

arquivos são geralmente chamados libcrypto.so.1.0.0 e libssl.so.1.0.0 para o tipo 1.0, res-

pectivamente. Como exemplo, no diretório /home/ubuntu/, existe um arquivo teste.txt,

que é um documento em PDF que foi convertido para TXT, conforme a Figura 31 a

seguir.

Page 77: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

76

Figura 31: Arquivo teste no diretório /home/ubuntu do servidor.Fonte: Elaborada pelo autor (2019).

O conteúdo inicial do arquivo pode ser visto na Figura 32, que mostra o abstract de

um artigo.

Figura 32: Conteúdo inicial do arquivo.Fonte: Elaborada pelo autor (2019).

Page 78: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

77

Ao realizar o comando “openssl enc -e -papilio128 -in teste.txt -out crip_teste1.txt”,

é solicitado uma senha e depois a confirmação da senha. Em seguida, o arquivo já é

criptografado, conforme a Figura 33.

Figura 33: Arquivo criptografado no diretório.Fonte: Elaborada pelo autor (2019).

Em seguida, a Figura 34 mostra o arquivo crip_testes1.txt criptografado, em que o

seu conteúdo está completamente diferente do conteúdo da Figura 32.

Figura 34: Arquivo teste.txt criptografado.Fonte: Elaborada pelo autor (2019).

Page 79: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

78

Uma das principais razões por trás da integração da Papílio Versátil no kit de fer-

ramentas OpenSSL foi permitir a maneira mais fácil de aplicar o Papilio Versátil em

aplicativos existentes. A maneira mais conveniente de fazer isso seria simplesmente subs-

tituir os arquivos existentes da biblioteca compartilhada por arquivos modificados. No

entanto, isso é possível somente quando a compatibilidade binária é assegurada entre as

bibliotecas originais e modificadas.

A compatibilidade binária reversa é o recurso da nova versão de uma biblioteca contra

uma versão antiga da mesma biblioteca para garantir que os aplicativos que trabalham

com a versão antiga continuem funcionando corretamente com a nova versão. Exemplos

de quebra de compatibilidade binária incluem a alteração do tamanho do tipo de dados

de um parâmetro de função ou a alteração da estrutura de uma tabela virtual em uma

classe. Essas alterações resultam em comportamento de tempo de execução incorreto ou

até mesmo falha de aplicativos que usam a função ou classe correspondente.

Durante a integração do Papílio Versátil no OpenSSL, a preocupação para manter a

compatibilidade binária entre as versões do OpenSSL. Graças a isso, é possível implantar

o Papílio Versátil em sistemas existentes sem qualquer requisito para alterar o código de

aplicativos usando o OpenSSL.

5.3 Performance

O desempenho é um requisito primário para criptografia simétrica hoje em dia. Du-

rante a implementação da versão OpenSSL do Papilio Versátil. O código do Papílio Ver-

sátil foi reescrito, tendo como base o modelo do algoritmo Camellia, e o que antes estava

apenas em um único arquivo foi subdividido em dez arquivos. Em consequência disso,

conseguimos obter uma equiparação com relação as cifras padrões da biblioteca, como

demostra a Figura 35.

Page 80: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

79

Figura 35: Comando speed no openssl para o Papílio.Fonte: Elaborada pelo autor (2019).

Por padrão, os algoritmos da biblioteca utilizam normalmente em média 3 segundos

para realizar criptografia em diferentes tamanhos de blocos. O Papílio se mostrou capaz de

manter essa média e algumas vezes ganhou até uns segundos, porém o tempo de 3 segundos

prevalece. Alguns fatores de desempenho são utilizados em (TRIPATHI; AGRAWAL, 2014),

que foram utilizados para realizar testes com o OpenSSL + Papílio.

• Velocidade computacional - Em muitos aplicativos em tempo real, os algoritmos de

criptografia e descriptografia são rápidos o suficiente para atender aos requisitos em

tempo real.

• Valor do comprimento da chave - Nas metodologias de criptografia, o gerenciamento

de chaves é o recurso importante para mostrar como os dados são criptografados. O

algoritmo simétrico usa um comprimento de chave variável que é maior.

• Taxa de criptografia - A taxa de criptografia é a medida da quantidade de dados

que deve ser criptografada. Ela deve ser minimizada para reduzir a complexidade

da computação.

• Questões de segurança - A segurança criptográfica define se o esquema de criptogra-

fia é seguro contra força bruta, ataque de tempo e ataques de texto com criptografia

de texto sem formatação. Para aplicativos multimídia altamente importantes para

o esquema de criptografia, deve satisfazer a segurança da criptografia.

• Tempo - O tempo essencial pelo algoritmo para totalizar a operação depende da

velocidade do processador e da complexidade do algoritmo.

Page 81: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

80

• Taxa de transferência - A taxa de transferência dos algoritmos de criptografia é

calculada dividindo-se o texto sem formatação total em Megabytes criptografados

no tempo total de criptografia para cada algoritmo.

Com todas essas informações, podemos utilizar esses dados para realizar uma compa-

ração entre os algoritmos simétricos, que será demonstrada na Seção 5.5.

5.4 Conectividade SSL/TLS

Novos ciphersuites, contendo Papílio Versátil, foram criados na biblioteca libssl. Com

isso, é possível usar Papílio Versátil para criptografar dados transmitidos em conexões

SSL/TLS. O algoritmo de criptografia usado em uma sessão é acordado entre o cliente e

o servidor durante o procedimento de manipulação do Handshake. O cliente envia uma

mensagem do Client Hello para o servidor. Um exemplo de sua messagem é mostrado na

Figura 36. A mensagem do Client Hello contém a lista de conjuntos de cifras suportada

pelo cliente. A lista é ordenada por preferência (ciphersuites geralmente mais seguros são

mais preferidos). Os ciphersuites Papílio Versátil são identificados como desconhecidos

pelo software Wireshark porque seus IDs são do intervalo privado e o Wireshark não os

reconhece.

Page 82: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

81

Figura 36: Cifras disponíveis para a comunicação Cliente.Fonte: Elaborada pelo autor (2019).

O servidor escolhe o primeiro ciphersuite suportado da lista e envia seu ID para o

cliente em uma mensagem do Servidor Hello. Como mencionado anteriormente, o exemplo

de uma mensagem do Servidor Hello é mostrado na Figura 36. Nesse caso, o servidor

escolhe o ciphersuite com o ID 0xFF88. Ele corresponde ao ciphersuite

"#define TLS1_CK_DHE_RSA_WITH_PAPILIO_320_CBC_SHA"

que usa cifra Papílio com chave de 320 bits para proteger os dados transmitidos entre o

cliente e o servidor.

Page 83: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

82

Figura 37: Cifras disponíveis para a comunicação.Fonte: Elaborada pelo autor (2019).

Para que a negociação obtenha êxito, o OpenSSL + Papílio Versátil tem que estar

implementado tanto no cliente quanto no servidor. Se um deles estiver com a biblioteca

OpenSSL original (sem o Papílio Versátil como ciphersuites), a escolha da cifra padrão

será utilizada para a criptografia da comunicação entre eles, normalmente com a cifra

utilizada e o algoritmo AES. Isso significa que é possível estabelecer uma conexão segura

entre pares que estão usando bibliotecas modificadas e originais, prova de compatibilidade

binária.

5.5 Comparação de algoritmos de criptografia

A comparação do algoritmo Papílio Versátil implementado no OpenSSL, com outros

algoritmos da biblioteca, fornecerá uma base para defender a utilização do uso da bi-

blioteca implementada. Comparamos os algoritmos simétricos existentes com base em

diferentes parâmetros, como mostrado na tabela a seguir que inclui tamanho do bloco,

segurança e velocidade, dados utilizados para realizar um gráfico comparativo. Além de

Page 84: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

83

tais dados, também foram utilizados outros, como tamanho da chave, estrutura, vulnera-

bilidade e seu ano de desenvolvimento.

Figura 38: Tabela comparativa das cifras simétricas.Fonte: Elaborada pelo autor (2019).

O algoritmo Papílio possui apenas a criptoanálise diferencial, em (FILHO, 2010), ainda

é necessário realizar a criptoanálise linear, para que essa informação seja válida. Como

posto ma seção 3.4, devido ao Papílio Versátil ser mais complexo e robusto que o Papílio

Original, seu desempenho pode ser ainda melhor que este último nas criptoanálise linear

e diferencial. Em relação à comparação do algoritmo Camellia com o Papílio Versátil,

não pode ser realizada, já que o Camellia não faz parte da escolha feita pela diretiva

ciphersuite. E o mesmo não suporta a versão TSL, visto que ele trabalha na versão anterior

do OpenSSL, que foi substituída pelo TLS.

Para que se possa observar as informações de maneira mais clara, foram gerados os

gráficos da Figura 39 baseados nas informações da tabela na Figura 38, com a exclusão de

algumas informações. Para que não haja uma desigualdade muito além do gráfico, nesse

caso, foram mantidos apenas as velocidade computacional, taxa de transferência e Taxa

de criptografia.

Page 85: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

84

Figura 39: Gráficos de comparação das cifras simétricas.Fonte: Elaborada pelo autor (2019).

Page 86: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

85

6 Considerações Finais

Este capítulo apresenta uma conclusão ao trabalho realizado. Primeiramente uma

contextualização do problema abordado nesta dissertação é apresentada e, em seguida,

um resumo do trabalho desenvolvido também é apresentado. Além disso, uma revisão dos

objetivos e contribuições é disposta, apresentando os principais resultados obtidos. Por

fim, os trabalhos futuros são apresentados, elucidando possíveis tarefas a serem realizadas

posteriormente..

6.1 Conclusões

A integração do algoritmo na biblioteca OpenSSL, por não ser uma abordagem am-

plamente utilizada, oferece diversos desafios. A criptografia é formada por diferentes ca-

racterísticas, que podem ser utilizadas em dispositivos que realizem comunicação segura,

podendo alcançar qualquer plataforma com dispositivos de baixo poder computacional ou

dispositivos de capacidade computacional considerável e sem limitações. Esta heteroge-

neidade traz um desafio no que tange à comunicação segura de dispositivos limitados com

a Internet. Nessa área, é preciso desenvolver protocolos que possam ser executados por

estes dispositivos de menor capacidade e que, ao mesmo tempo, sejam compatíveis com

os protocolos utilizados atualmente na Internet (OPENSSL.ORG, 2018).

A privacidade do usuário é assegurada por meio de armazenamento criptografado, em

que apenas as entidades que devem acessar os dados possuem as chaves criptográficas

para realizar esta operação. Como previsto nas intenções, foi realizada a implementação

do algoritmo Papílio Versátil (NETO, 2009), na biblioteca OpenSSL (OPENSSL.ORG, 2018)

que é uma biblioteca com diversos algoritmos de criptografia (simétrica e assimétrica),

bastante popular e muito utilizada nos dias atuais. Para garantir uma comparação com

o estado da arte e validar os resultados obtidos nas mudanças propostas, cada algoritmo

simétrico estudado foi escolhido de acordo com as propriedades do Papílio Versátil.

Page 87: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

86

Tais algoritmos não fizeram parte das implementações propostas, pois eles serviram

de base de estudos e já fazem parte da biblioteca, dado que a intenção deste trabalho foi a

implementação em linhas de código do Papílio Versátil, que devem ser escritos visando a

portabilidade e utilizando somente as bibliotecas padrões da linguagem C/C++, Makefile,

Perl e Python, na biblioteca nativa do OpenSSL.

Um dos desafios desse trabalho foi definir qual(is) algoritmo(s) poderia(m) ser utili-

zado(s) como fundamentação para a implementação, após estudo sobre os algoritmos si-

métricos utilizados pela biblioteca e focando nos algoritmos de cifras de bloco. Escolheu-se

o algoritmo CAMELLIA (KATO; KANDA; KANNO, 2010), pois é uma algoritmo bastante

similar ao Papílio, assim como o DES e o AES, pois utilizam a rede Feistel.

Após o estudo das definições e funções desses algoritmos, deu-se início ao trabalho

de escrita do código, a implementação em si. Como a biblioteca OpenSSL se baseia em

arquivos MakeFile, a cada implementação era necessária uma nova compilação, em que

os erros eram analisados para que a correção pudesse ocorrer.

A modificação de vários arquivos também dificulta muito a busca por erros, pois

algumas vezes eles não vêm descritos de forma clara no momento de compilação. No

quesito limitação, infelizmente, como o algoritmo não é homologado, ele não está presente

em todas as versões do OpenSSL, fazendo com que, para a utilização do Papílio Versátil,

seja necessário que o cliente e o servidor utilizem a biblioteca implementada com o referido

algoritmo. Caso contrário, eles assumem a comunicação padrão de segurança do OpenSSL.

6.2 Trabalhos Futuros

Por fim, como trabalhos futuros, pode-se estudar e desenvolver:

(i) Melhoria do desenvolvimento do Papílio Genético que, em experimentos, apresen-

tou um tempo muito elevado para realizar a criptografia. Visto que ele iniciava pelo

algoritmo Papílio, em seguida realizava a chamada da versão genética, que rodava

independente. Em cada subchave gerada, ele armazenava o valor para que pudesse

passar no final de cada iteração, gerando um custo muito alto para realizar a crip-

tografia, fazendo com que ele não fosse utilizado.

(ii) Aplicar a biblioteca OpenSSL Papílio na plataforma FIWARE, para que seja veri-

ficada sua utilização em serviços IoT.

(iii) Realizar a comparação com o protocolo MQTT SSL/TSL.

Page 88: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

87

Referências

ARAÚJO, F. PapílioXP - Uma Exensão do Algoritmo Criptográfico Papílio. 2003.Monografia (Engenharia da Computação), UFRN (Universidade Federal do Rio Grandedo Norte), Natal, Brasil.

ARAÚJO, F. S. et al. Papílio cryptography algorithm. In: Computational andInformation Science. [S.l.]: Springer Berlin Heidelberg, 2005, (Lecture Notes in ComputerScience, v. 3314). p. 928–933.

BARRETO, P. S. L. M. Curvas Elípticas e Criptografia: Conceitos e Algoritmos. [S.l.],1999.

BERTINO, E. Editorial: Introduction to Data Security and Privacy. Data Science andEngineering, v. 1, n. 3, p. 125–126, 2016. Disponível em:<https://doi.org/10.1007/s41019-016-0021-1>.

DAR, M. H.; MITTAL, P.; KUMAR, V. A comparative study of cryptographicalgorithms. International Journal of Computer Science and Network, v. 3, p. 2277–5420,June 2014.

DIFFIE, W.; HELLMAN, M. New directions in cryptography. IEEE Transactionson Information Theory, v. 22, n. 6, p. 644–654, Nov 1976. Disponível em:<http://dx.doi.org/10.1109/TIT.1976.1055638>.

FERNANDES, M. A. Segurança em Redes: Fundamentos. 1. ed. [S.l.]: ERICA, 2013.

FIGUEIRA, V. P. “Internet das coisas” : um estudo sobre questões de segurança,privacidade e infraestrutura. Dezembro 2016. TSC - Trabalho de Conclusão deCurso, Universidade Federal Fluiminense -UFF, RJ- Rio de Janeiro. Disponível em:<https://app.uff.br/riuff/handle/1/5150>.

FILHO, I. L. O. Criptoanálise Diferencial do Papílio. Dissertação (Mestrado) —Universidade Federal do Rio Grande do Norte - UFRN, 2010.

FILHO, I. L. O. Algoritmo Papílio como Método de Proteção de Templates paraAumentar a Segurança em Sistemas de Identificação Biométricos. Tese (Doutorado) —Universidade Federal do Rio Grande do Norte - UFRN, Dez 2014.

FILHO, I. L. O. et al. Increasing data accuracy in biometric authentication systems: Anexploratory study using papilio algorithm on fuzzy schemes. In: International Journal ofHybrid Intelligent Systems. [S.l.: s.n.], 2017.

FILHO, I. L. O. et al. A comparative analysis of cryptographic algorithms andtransformation functions for biometric data. In: 2013 12th International Conference onMachine Learning and Applications. [S.l.: s.n.], 2013. v. 2, p. 255–260.

Page 89: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

88

GITHUB. TLS/SSL and crypto library. https://github.com/openssl/openssl, 2018. Web.

GURPREET, S.; SUPRIYA, K. A study of encryption algorithms (rsa, des, 3des andaes) for information security. International Journal of Computer Applications, v. 67, p.33–38, April 2013.

JURKIEWICZ, P.; NIEMIEC, M. Implementation of a new cipher in opensslenvironment the case of indect block cipher. International Journal of Computerand Communication Engineering, v. 5, n. 1, p. 41–49, Jan 2016. Disponível em:<http://www.ijcce.org/index.php?m=content&c=index&a=show&catid=56&id=508>.

KATO, A.; KANDA, M.; KANNO, S. Camellia Cipher Suites for TLS. June 2010.Disponível em: <https://tools.ietf.org/html/rfc5932>.

KAUR, S.; KAUR, A. Article: Survey of security algorithms in cloud. InternationalJournal of Computer Applications, v. 115, n. 19, p. 23–27, April 2015. Full text available.

KHAN, R. et al. Future internet: The internet of things architecture, possible applicationsand key challenges. In: . [S.l.: s.n.], 2012. p. 257–260. ISBN 978-1-4673-4946-8.

LOPES, L. Papilio in OpenSSL. https://github.com/LuizRanyer/papilio, 2019. Web.

NETO, J. B. S. L. Papílio Versátil: um algoritmo criptográfico. Dezembro 2009.Monografia (Bacharel Ciência da Computação), UFRN (Universidade Federal do RioGrande do Norte), Natal, Brasil.

OLIVEIRA, C. T. et al. Improving security on iot applications based on the FIWAREplatform. In: 32nd IEEE International Conference on Advanced Information Networkingand Applications, AINA 2018, Krakow, Poland, May 16-18, 2018. [s.n.], 2018. p.686–693. Disponível em: <https://doi.org/10.1109/AINA.2018.00104>.

OPENSSL.ORG. OpenSSL Documents. 2018. Disponível em:<http://www.opessl.org/docs>.

PACHECO, L. A. B. Arquitetura para privacidade na integração de inter-net das coisas e computação em nuvem. Junho 2018. CIC - Mestrado emInformática (Dissertações), Universidade de Brasilia - UNB. Disponível em:<http://repositorio.unb.br/handle/10482/32137>.

PINHEIRO F. V.; VIEIRA, G. S.; SILVA, L. G. D. SSL/TLS: Redes deComputadores I. GTA UFRJ. http://www.gta.ufrj.br/, 2016. Disponível em:<http://www.gta.ufrj.br/grad/11_1/tls/index.html>.

PRAKASH G. L., P. M.; SINGH, I. Data security algorithms for cloud storagesystem using cryptographic method. International Journal of Advanced Engineering,Management and Science, v. 5, 2014. ISSN 2229-5518.

RAMOS, K. D. N. Proposta de um Algoritmo de Criptografia Baseado no AlgoritmoViterbi e Codificação Convolucional. Dissertação (Mestrado) — Universidade Federal doRio Grande do Norte - UFRN, Fev 2002.

Page 90: ImplementaçãodoAlgoritmoCriptográfico ... · Filho, Isaac de Lima. III. Título. RN/UF/CCET CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas -

89

ROBACK, E.; M., D. First advanced encryption standard (aes) candidate conference. In:. [s.n.], 1998. Disponível em: <http://www.ieee-security.org/Cipher/ConfReports/conf-rep-aes.html>.

ROCHA, C. A.; PEDROSO, E. T.; JUNIOR, E. T. S. O Protocolo Se-cure Sockets Layer (SSL). 2003. Mestrado Profissional em Computa-ção, Universidade Estadual de Campinas - UNICAMP. Disponível em:<www.ic.unicamp.br/rdahab/cursos/mp202/Welcome_files/trabalhos/SSL/texto/SSL_Texto.pdf>.

SEMWAL, P.; SHARMA, M. K. Comparative study of different cryptographic algorithmsfor data security in cloud computing. In: 2017 3rd International Conference on Advancesin Computing,Communication Automation (ICACCA) (Fall). [S.l.: s.n.], 2017. p. 1–7.

SHIREY, R. Request for Comments: 2828. http://www.rfc-base.org/rfc-2828.html, May2000. Disponível em: <https://www.ietf.org/rfc/rfc2828.txt>.

SIMON, S. The code book: the secret history of codes and code-breaking. London: FourthEstate, 2000. Disponível em: <http://cds.cern.ch/record/1550989>.

STALLINGS, W. Criptografia e segurança de redes. 4. ed. [S.l.]: Sao Paulo: PearsonPrentice Hall., 2008.

THOMAS, S. A. SSL and TLS Essentials: Securing the Web with CD-ROM. New York,NY, USA: John Wiley & Sons, Inc., 2000.

TRIPATHI, R.; AGRAWAL, S. Comparative study of symmetric and asymmetriccryptography techniques. In: International Journal of Advance Foundation andResearch in Computer (IJAFRC). [s.n.], 2014. ISSN 2348-4853. Disponível em:<https://pdfs.semanticscholar.org/e0e4/810c5276f9c05cc82425fcf911f206c52bef.pdf>.

WAHID, M. N. A. et al. A comparison of cryptographic algorithms: Des, 3des, aes, rsa andblowfish for guessing attacks prevention. In: Journal of Computer Science Applicationsand Information Technology. [s.n.], 2018. ISSN Online: 2474-9257. Disponível em:<https://pdfs.semanticscholar.org/6133/bb355672b8a6c4f1c410bc41abc6a94162a7.pdf>.

YUSUFZAI, A. et al. A comparative study of cryptographic algorithms for cloudsecurity. In: RATHORE, V. S. et al. (Ed.). Emerging Trends in Expert Applications andSecurity. Singapore: Springer Singapore, 2019. p. 409–415.