• Nenhum resultado encontrado

Avaliação de desempenho de algoritmos criptográficos em microcontroladores Arduino

N/A
N/A
Protected

Academic year: 2021

Share "Avaliação de desempenho de algoritmos criptográficos em microcontroladores Arduino"

Copied!
52
0
0

Texto

(1)

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

DAINF - DEPARTAMENTO ACADÊMICO DE INFORMÁTICA

CURSO DE BACHARELADO EM SISTEMAS DE INFORMAÇÃO

MARYNEA APARECIDA PEREIRA PALLARO

AVALIAÇÃO DE DESEMPENHO DE ALGORITMOS

CRIPTOGRÁFICOS EM MICROCONTROLADORES

ARDUINO

TRABALHO DE CONCLUSÃO DE CURSO

CURITIBA

2019

(2)

MARYNEA APARECIDA PEREIRA PALLARO

AVALIAÇÃO DE DESEMPENHO DE ALGORITMOS

CRIPTOGRÁFICOS EM MICROCONTROLADORES

ARDUINO

Proposta de Trabalho de Conclusão de Curso apresentado ao Curso de Bacharelado em Sistemas de Informação da Universidade Tecnológica Federal do Paraná, como requisito parcial para a obtenção do título de Bacharel.

Orientador: Prof. Dr. Daniel F. Pigatto

DAELN - Departamento Acadêmico de Ele-trônica -UTFPR

CURITIBA

2019

(3)

Ministério da Educação

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Câmpus Curitiba

Diretoria de Graduação e Educação Profissional

Departamento Acadêmico de Informática

Coordenação do Curso de Bacharelado em Sistemas de Informação

TERMO DE APROVAÇÃO

“AVALIAÇÃO DE DESEMPENHO DE ALGORITMOS CRIPTOGRÁFICOS EM MICROCONTROLADORES ARDUINO”

por

“MARYNEA APARECIDA PEREIRA PALLARO”

Este Trabalho de Conclusão de Curso foi apresentado no dia de <mês por extenso> de <ANO> como requisito parcial à obtenção do grau de Bacharel em Sistemas de Informação na Universidade Tecnológica Federal do Paraná - UTFPR - Câmpus Curitiba. O(a)(s) aluno(a)(s) foi(ram) arguido(a)(s) pelos membros da Banca de Avaliação abaixo assinados. Após deliberação a Banca de Avaliação considerou o trabalho ________________________________________.

________________________________

<Prof. Daniel Fernando Pigatto>

(Presidente - UTFPR/Curitiba)

________________________________

<Profa. Ana Cristina Barreiras K. Vendramim >

(Avaliador(a) 1 - UTFPR/Curitiba)

________________________________

<Prof. Joilson Alves Junior> (Avaliador 2(a) - UTFPR/Curitiba)

________________________________

<Profa. Leyza Baldo Dorini>

(Professora Responsável pelo TCC – UTFPR/Curitiba)

_____________________________

<Prof. Marcelo Mikosz Gonçalves>

(Coordenadordo curso de Bacharelado em Sistemas de Informação – UTFPR/Curitiba)

(4)

À minha querida mãe Sandra (in memoriam), que mesmo diante das maiores dificuldades, nunca deixou de estudar. Sua força de vontade sempre me inspirou a lutar pelos meus sonhos. Saudades eternas.

(5)

AGRADECIMENTOS

Nenhuma batalha é vencida sozinha.No decorrer desta luta, diversas pessoas estiveram ao meu lado e percorreram este caminho como verdadeiros soldados, estimulando minha vitória e meus sonhos.

Agradeço em primeiro lugar a Deus, autor da minha vida, que até aqui tem me sustentado e colocado todos estes anjos em minha vida para me ajudar em todos os momentos.

À minha mãe, Sandra (in memorian), que desde sempre me mostrou a importância de estudar. Que sempre compartilhou seus macetes e me levava junto para a biblioteca. Que me ensinou a sonhar, sonhou comigo e me mostrou o caminho para realizar estes sonhos. Onde quer que você esteja, saiba que te amo muito. Você é minha maior inspiração.

Ao meu pai Nilton, que nunca mediu esforços quando o assunto era minha educação. Que me ensinou os maiores valores que se pode ter na vida. Aqui estão os resultados de todos esses anos.

Mamãe, papai, muito obrigada por tudo!

À minha família, que sempre me apoiou e comemorou comigo cada pequeno passo até este momento. Avós, avôs, dindos, tios, primos, sogros, cunhados. Obrigada!

À Universidade Tecnológica Federal do Paraná, por ofertar o curso de Bacharelado em Sistemas de Informação, pelo qual me apaixonei desde o primeiro dia de aula, por toda estrutura oferecida ao longo destes anos e principalmente por me dar oportunidade de entregar um trabalho melhor e mais completo através do Edital de Apoio à Elaboração de TCC.

Falando da Universidade, não posso deixar de agradecer a todos os professores maravilhosos com quem tive a honra de aprender. O brilho nos olhos ao falar de computação, a paciência ao ensinar um conteúdo difícil (e repetir a mesma coisa cem vezes quando necessário), o amor pela profissão heroica que vocês escolheram desempenhar ficarão eternamente guardados em minha memória e em meu coração. Serei eternamente grata por cada lição, não só de computação, gestão, ou outras disciplinas, mas de vida.

Ao meu orientador, Daniel Fernando Pigatto, que desde o começo me acompanhou, dando todo auxílio e apoio necessário para a elaboração deste trabalho, mesmo que isso custasse algumas horas de sono. Por continuar trabalhando comigo depois de se tornar coordenador de curso e por sempre arranjar alguns minutos ou horas para me atender. Muitíssimo obrigada!

Aos amigos e colegas pela compreensão das ausências e pelos afastamentos tempo-rários. A cada um que me deu apoio quando a matéria estava muito difícil, que acreditaram em mim mesmo quando eu mesma não acreditava e que não me deixaram desistir. Posso dizer que eu não chegaria até aqui se não fosse por vocês.

(6)

Por último, mas não menos importante, ao meu esposo Bruno, meu parceiro de Arduino, a pessoa quem primeiro me mostrou este mundo incrível da Internet das Coisas e esteve ao meu lado desde meu primeiro "Hello World! ".Que nos momentos mais difíceis me estendeu a mão, me abraçou forte. Meu muito obrigada a você pela união e cumplicidade. Meu amor, eu te amo!

(7)

RESUMO

PALLARO, Marynea. AVALIAÇÃO DE DESEMPENHO DE ALGORITMOS CRIP-TOGRÁFICOS EM MICROCONTROLADORES ARDUINO. 2019. 52 f. Trabalho de Conclusão de Curso – Curso de Bacharelado em Sistemas de Informação, Universidade Tecnológica Federal do Paraná. Curitiba, 2019.

Um dos propósitos da Internet das Coisas é fazer com que objetos executem tarefas do dia-a-dia com pouca ou nenhuma interação humana e em diferentes domínios. Esses objetos são dispositivos computacionais com diferentes configurações, geralmente classificados como sistemas embarcados, que podem operar como sensores e/ou atuadores e que possuem, na grande maioria das vezes, pelo menos um módulo de comunicação. Devido à natureza das aplicações e às ameaças existentes em redes de computadores atualmente, o uso de mecanismos que permitam aumentar a segurança da informação manipulada por esses dispositivos é necessária na maioria das situações, seja para simples armazenamento ou para envio através da rede. Tendo em vista o aumento da segurança, este trabalho investiga o impacto de algoritmos criptográficos parametrizados com diferentes tamanhos de chave e executados em diferentes versões do microcontrolador Arduino, um dos mais utilizados para sistemas embarcados de pequeno porte. Os resultados mostram uma comparação entre os vários modelos de placas e tamanhos de chave, além de variar os modos de operação do algoritmo de criptografia escolhido. Por fim, uma avaliação de desempenho é conduzida para efetuar comparações entre modelos com propósitos similares de aplicação.

(8)

ABSTRACT

PALLARO, Marynea. Performance Evaluation of Cryptographic Algorithms in Arduino Microcontrollers. 2019. 52 f. Trabalho de Conclusão de Curso – Curso de Bacharelado em Sistemas de Informação, Universidade Tecnológica Federal do Paraná. Curitiba, 2019. One of the purposes of Internet of Things is to make objects perform everyday tasks with little or no human interaction in different domains. These objects are computational devices with different configurations, generally classified as embedded systems, which can operate as sensors and/or operators and which most oftenly have at least one communication module. Considering the nature of applications and threats in today’s computer networks, the use of mechanisms to increase the security of information handled by these devices is necessary in most situations, both for storage and transmissions. In order to increase security, this work investigates the impact of parameterized cryptographic algorithms with different key sizes and executed on different versions of the Arduino microcontroller, one of the most commonly used equipment for small embedded systems. The results show a comparison among boards models and key sizes, as well as different operation modes of the cryptographic algorithm. Finally, a performance evaluation is conducted to make comparisons between models with similar application purposes.

(9)

LISTA DE FIGURAS

Figura 1 – Classificações da criptografia. . . 20

Figura 2 – Processo da criptografia simétrica. . . 21

Figura 3 – Processo da criptografia assimétrica . . . 23

Figura 4 – Electronic Code Block (ECB) . . . . 24

Figura 5 – Imagem criptografada com diferentes modos do AES . . . 25

Figura 6 – Cipher-Block Chaining (CBC) . . . . 26

Figura 7 – Cipher FeedBack (CFB) . . . . 26

Figura 8 – Output Feedback - (OFB) . . . 27

Figura 9 – Counter - (CTR) . . . . 27

Figura 10 – Tempo médio de execução para operações de criptografia e decriptografia. 38 Figura 11 – Estudo de Caso 1 - tempos médios de execução . . . 40

Figura 12 – Estudo de Caso 1 - fatores de influência . . . 40

Figura 13 – Estudo de Caso 2 - tempos médios de execução . . . 42

Figura 14 – Estudo de Caso 2 - fatores de influência . . . 42

Figura 15 – Estudo de Caso 3 - tempos médios de execução . . . 43

Figura 16 – Estudo de Caso 3 - fatores de influência . . . 44

Figura 17 – Estudo de Caso 4 - tempos médios de execução . . . 45

(10)

LISTA DE TABELAS

Tabela 1 – Resumo dos modos de operação de confidencialidade do AES . . . 27

Tabela 2 – Comparação de especificações de placas . . . 29

Tabela 3 – Configurações do experimento. . . 37

Tabela 4 – Configurações do experimento do Estudo de Caso 1. . . 39

Tabela 5 – Configurações do experimento do Estudo de Caso 2. . . 41

Tabela 6 – Configurações do experimento do Estudo de Caso 3. . . 43

(11)

LISTA DE ABREVIATURAS E SIGLAS

AES Advanced Encryption Standard ARC Argonaut RISC Core

CBC Cipher Block Chaining CFB Cipher Feedback

CSV Comma Separated Value

CTR Counter

DES Data Encryption Standard DoS Denial of Service

ECB Electronic Code Block ECC Elliptic Curve Cryptography

EEPROM Electrically-Erasable Programmable Read-Only Memory FIPS Federal Information Processing Standard

IDE Integrated Development Environment IDII Interaction Design Institute Ivrea IoT Internet of Things

NIST National Institute of Standards and Technology OFB Output Feedback

RAM Random Access Memory RSA Rivest, Shamir, Adleman) SPI Serial Peripheral Interface SRAM Static Ramdom-Access Memory SSA Sum of Squares A

SSAB Sum of Squares AB SSB Sum of Squares B

(12)

SSL Secure Sockets Layer SST Sum of Squares Total XOR Exclusive OR

(13)

SUMÁRIO 1 – INTRODUÇÃO . . . . 15 1.1 Caracterização do Problema . . . 16 1.2 Objetivos . . . 16 1.2.1 Objetivo Geral . . . 16 1.2.2 Objetivos Específicos . . . 16 1.3 Estrutura do texto . . . 16 2 – REFERENCIAL TEÓRICO . . . . 18 2.1 Segurança . . . 18 2.2 Criptografia . . . 20 2.2.1 Criptografia Simétrica . . . 21 2.2.2 Criptografia Assimétrica . . . 22

2.2.3 Modos de Operação de Confidencialidade . . . 24

2.3 Arduino . . . 27

2.4 Trabalhos Relacionados . . . 29

2.5 Considerações finais . . . 30

3 – METODOLOGIA . . . . 32

3.1 Avaliação de Desempenho para Sistemas Computacionais . . . 32

3.1.1 Intervalo de Confiança . . . 34

3.1.2 2K Fatorial Completo . . . . 34

3.2 Arduino . . . 36

3.3 Ambiente Integrado de Desenvolvimento . . . 36

3.4 Advanced Encryption Standard - AES . . . . 36

3.5 Planejamento dos Experimentos . . . 36

4 – RESULTADOS . . . . 38

4.1 Estudo de Caso 1: ECB e CBC em Arduinos Modelos de Entrada . . . . 39

4.2 Estudo de Caso 2: CFB e OFB em Arduinos Modelos de Entrada . . . . 41

4.3 Estudo de Caso 3: ECB e CBC em Arduinos Modelos Avançados . . . 43

4.4 Estudo de Caso 4: CFB e OFB em Arduinos Modelos Avançados . . . 44

4.5 Considerações finais . . . 46

5 – CONCLUSÃO . . . . 47

5.1 Dificuldades encontradas . . . 48

(14)
(15)

15

1 INTRODUÇÃO

Em 1988, Marc Weiser criou o termo computação ubíqua. Naquela época, ele percebeu que os computadores estavam passando por transformações, já que estavam se tornando cada vez mais populares. Segundo ele, os computadores, da maneira como eram conhecidos na época, desapareceriam e suas funcionalidades seriam incorporadas em objetos do cotidiano até que não fosse mais possível distinguir um do outro (??).

Embora o termo seja cada dia mais utilizado, ainda não há um consenso sobre a definição da Internet das Coisas (do inglês Internet of Things, IoT). Em seu artigo, Wortmann e Flüchter (2015) mencionam três vertentes desse conceito. Uma delas fala a respeito de objetos inteligentes que podem ser conectados à Internet. Outra possui enfoque em aspectos técnicos como protocolos e tecnologias de redes. A terceira é centrada nos desafios como armazenamento e organização de dados gerados por esses dispositivos.

Um dos propósitos da Internet das Coisas é fazer com que objetos executem tarefas do dia-a-dia com pouca ou nenhuma interação humana e em diferentes domínios. Por exemplo, na saúde, pacientes com doenças crônicas podem ser monitorados remotamente por seus médicos; nas residências, há termostatos inteligentes, que trabalham para manter um ambiente em temperatura agradável; em carros, é possível coletar informações sobre consumo e desempenho (WORTMANN; FLÜCHTER, 2015).

Muitos projetos de IoT usam placas de processamento como Arduinos, Raspberry Pi, Intel Galileo e outras. Dentre elas, o Arduino é uma das mais simples plataformas para criação de protótipos, desenvolvido para que estudantes de design e pessoas com pouco conhecimento em programação ou eletrônica possam criar facilmente protótipos funcionais (ARDUINO, 2019g). Ele é fácil para se programar e acoplar componentes eletrônicos, além de ter baixo custo e versatilidade. Usa linguagem de programação própria baseada em Wiring1, possui ambiente de desenvolvimento similar ao Processing2 e possui uma comunidade ativa, composta por estudantes, designers, engenheiros e amantes dessa tecnologia.

Como os dispositivos de IoT podem se conectar, mandar e receber dados através da internet, um dos pontos mais críticos está ligado a aspectos de segurança (ADAT; GUPTA, 2018; ZHANG et al., 2014). Uma das formas de garantir que informações coletadas e manipuladas por dispositivos de uma rede IoT estejam seguras é o uso de alguma técnica de criptografia, o que pode impactar negativamente no desempenho desses sistemas. Portanto, é importante efetuar a verificação de quais métodos criptográficos são mais adequados para dispositivos com recursos de processamento, memória e armazenamento limitados.

Em 2001, o Advanced Encryption Standard (AES) foi definido como o algoritmo 1http://wiring.org.co/

(16)

Capítulo 1. INTRODUÇÃO 16

padrão para criptografia pelo National Institute of Standards and Technology (NIST). O AES herdou do seu antecessor os modos de confidencialidade, que acrescenta um grau de aleatoriedade à mensagem criptografada, dificultando a decriptografia através de métodos estatísticos. Hoje, por ser o padrão, o AES é um dos algoritmos de criptografia mais utilizados (NIST, 2001; SOUSA et al., 2018).

1.1 Caracterização do Problema

A maioria dos dispositivos usados em IoT são embarcados, ou seja, são pequenos e não possuem muitos recursos computacionais. Por isso, um dos grandes desafios desta área de pesquisa é encontrar algoritmos de baixo custo computacional e que utilizem o mínimo de recursos para serem executados.

Assim, o problema geral que esta pesquisa busca resolver está presente na seguinte pergunta: “Qual é o modo de operação do AES que se comporta melhor em relação a desempenho sistemático, tendo enfoque no tempo de execução?”

1.2 Objetivos

1.2.1 Objetivo Geral

O objetivo deste trabalho é avaliar o desempenho de diferentes modos de operação de algoritmos de criptografia para sistemas embarcados focados em Internet das Coisas utilizando diferentes plataformas Arduino.

1.2.2 Objetivos Específicos

Os objetivos específicos deste trabalho são:

• Estabelecer critérios de avaliação que sejam relevantes para dispositivos de Internet das Coisas por meio de revisão da literatura;

• Selecionar algoritmos de criptografia e modos de operação adequados para a aplicação em sistemas embarcados;

• Planejar os experimentos usando uma carga de trabalho e condições de execução similares às encontradas em cenários reais de Internet das Coisas;

• Fazer o tratamento e a análise dos resultados, podendo recomendar o uso de deter-minados algoritmos de criptografia ou de plataforma Arduino;

• Escrita de artigos científicos para eventos nacionais ou internacionais, se possível, relatando a experiência.

1.3 Estrutura do texto

Este trabalho possui 5 capítulos e está dividido da seguinte forma: o capítulo 2 mostra conceitos sobre segurança em sistemas computacionais e criptografia, além do

(17)

Capítulo 1. INTRODUÇÃO 17

estado da arte nesta área de pesquisa. Em seguida, o capítulo 3 explica a metodologia adotada para a realização dos experimentos, além de mostrar os recursos de hardware e

software utilizados. O capítulo 4 apresenta os experimentos e os resultados obtidos, e o

capítulo 5 expõe as conclusões deste estudo bem como sugestões para continuidade do trabalho.

(18)

18

2 REFERENCIAL TEÓRICO

Segurança em redes de computadores é uma área de intensas pesquisas devido ao crescente uso de computadores nas últimas décadas e à interconexão deles em redes dos mais variados tipos e tamanhos, na maioria das vezes conectadas à rede mundial de computadores, a Internet. Com toda esta possibilidade de troca de informações e acesso a dados armazenados em bases espalhadas ao redor do mundo, organizações e até mesmo usuários domésticos passaram a se preocupar com a necessidade de implantar mecanismos para assegurar que seus recursos e informações estejam devidamente protegidos.

Este capítulo apresenta conceitos básicos de segurança em redes de computadores, incluindo criptografia de chave simétrica e assimétrica. Apresenta também a proposta principal deste trabalho, mostrando a necessidade real de realização de experimentações práticas que comprovem quais os algoritmos e tamanhos de chave são mais apropriados para os cenários abordados.

2.1 Segurança

De acordo com Stapko (2007), segurança de computadores serve para proteger informações pessoais ou confidenciais e/ou recursos computacionais de indivíduos ou organizações que poderiam destruir ou utilizar tais informações com objetivos maliciosos. Para se implementar segurança em sistemas computacionais de forma eficaz, é necessário que as seguintes propriedades sejam garantidas (BISHOP, 2005; KUROSE; ROSS; MARQUES, 2003; STALLINGS, 2014):

• Confidencialidade: garante que apenas as partes interessadas tenham acesso a um conteúdo, ocultando-o e protegendo contra acesso não autorizado. Um exemplo prático pode ser observado em sistemas acadêmicos, onde o acesso à informação é restringido de acordo com classes de usuários (estudante, professor, secretário). Além disso, há a preocupação em manter secretas as informações pessoais de cada grupo. Assim, pode-se dizer que a confidencialidade é a garantia de que somente pessoas autorizadas poderão entender o conteúdo da mensagem. Se algum intruso conseguir interceptá-la, não deverá conseguir extrair informações do texto cifrado (disfarçado, ou ilegível);

• Autenticidade: garante que os participante do processo de comunicação são quem realmente afirmam ser. Essa confirmação é necessária pois, em sistemas computacio-nais, remetente e destinatário não são vistos um pelo outro para um reconhecimento visual, como acontece presencialmente. Assim, ambos precisam confirmar suas iden-tidades;

(19)

Capítulo 2. REFERENCIAL TEÓRICO 19

comunicação, como inserção, exclusão ou repetição;

• Não repúdio de mensagem: visa garantir que o remetente não negue ter criado e assinado a mensagem e que o destinatário não alegue que não a recebeu.

• Irretratabilidade: garante que que o sistema não permita a geração de documentos de forma retroativa no tempo.

• Disponibilidade: está relacionada à capacidade de acesso a serviços e informações sempre que usuários solicitarem.

Segundo Stallings (2014), uma ameaça pode ser definida como um potencial para violação da segurança quando há uma circunstância, capacidade, ação ou evento que pode quebrar a segurança e causar danos. Ou seja, uma ameaça é um possível perigo que pode explorar uma vulnerabilidade.

Existem dois tipos de ataque. Se um intruso tenta apenas escutar o que se passa no canal de comunicação, dizemos que houve um ataque passivo. Se, além disso, ele também tentar gravar mensagens, ou modificá-las de qualquer forma antes que elas cheguem ao receptor, então o ataque é considerado ativo (TANENBAUM, 2011).

Os ataques passivos são difíceis de serem detectados, porque normalmente o intruso monitora transmissões para obter informações que estejam sendo transmitidas. Podemos citar os seguintes exemplos de ataques passivos (BISHOP, 2005; STALLINGS, 2014):

• Liberação do conteúdo da mensagem: quando o intruso consegue acessar a mensagens transmitidas;

• Análise de tráfego: o intruso observa o tráfego para detectar comportamentos específicos, como o tamanho das mensagens e a frequência com que as entidades se comunicam. Assim, é possível descobrir a natureza dessas comunicações.

Os ataques ativos acontecem quando há algum tipo de modificação do fluxo de dados, incluindo a criação de um fluxo falso. Alguns exemplos são (BISHOP, 2005; STALLINGS, 2014):

• Modificação de mensagens: quando a mensagem é alterada em parte, ou no todo, ou quando é reordenada ou adiada, para produzir um efeito não autorizado;

• Repetição (ou repasse): quando uma mensagem é passivamente captada e re-transmitida posteriormente, produzindo um efeito não autorizado;

• Disfarce: ocorre quando uma entidade tenta se passar por outra;

• Negação de serviço (Denial of Service – DoS): quando um intruso impede ou inibe o uso ou gerenciamento normal das instalações de comunicação na fonte, no local de destino ou ao longo do caminho intermediário. Ou seja, é o impedimento do funcionamento normal de um servidor.

A arte de criar mensagens cifradas (criptografia) e a arte de solucioná-las (cripto-análise) são chamadas coletivamente de criptologia (STALLINGS, 2014). Neste trabalho, apenas o termo criptografia é abordado.

(20)

Capítulo 2. REFERENCIAL TEÓRICO 20

2.2 Criptografia

Uma das formas de implementação de segurança em sistemas computacionais é através de técnicas e algoritmos de criptografia. Pode-se definir criptografia como técnicas e métodos para codificar uma mensagem legível por meio de um algoritmo. Este algoritmo recebe uma chave como parâmetro e converte o texto (ou o conteúdo do arquivo) original, denominado texto claro, aberto ou simples, em texto cifrado (cifra). Então, o receptor pode efetuar o processo reverso para recuperar a mensagem original (MORENO; CHIARAMONTE; PEREIRA, 2005; TANENBAUM, 2011).

Conforme são descobertos novos algoritmos de criptografia, eles são divulgados à comunidade. O sigilo das informações é assegurado por meio de uma chave, que funciona como um tipo de senha mantida em segredo e que só pode oferecida às entidades pertinentes. A chave é um parâmetro de entrada, independente do texto claro e do algoritmo, que produzirá uma saída diferente, dependendo do seu valor atribuído, afinal as operações realizadas dependem dela. Logo, o tamanho desta chave está relacionada à segurança pois quanto maior a chave, mais segura será a criptografia (TANENBAUM, 2011).

Com base no tipo de chave, a criptografia é classificada em simétrica ou assimétrica. Ambas são largamente utilizadas na construção de sistemas seguros. A escolha por um ou outro tipo de criptografia dá-se através de análise do contexto em que esta será aplicada pois, apesar de algoritmos assimétricos exigirem mais processamento, existem situações em que a criptografia assimétrica é a mais recomendada (??). A Figura 1 mostra as possíveis classificações da criptografia.

Figura 1 – Classificações da criptografia.

(21)

Capítulo 2. REFERENCIAL TEÓRICO 21

2.2.1 Criptografia Simétrica

A criptografia de chave simétrica, ou de chave privada, é assim denominada porque uma única chave é utilizada tanto para o processo de criptografia quanto para decriptografia. Assim, emissor e receptor possuem a mesma chave, que deve ser mantida em segredo para garantir a confidencialidade das mensagens. Exemplos de algoritmos classificados como simétricos são o DES (Data Encryption Standard) (NIST, 1993) e o AES (Advanced Encryption Standard) (NIST, 2001).

A Figura 2 mostra como um texto legível é criptografado pelo emissor usando a chave secreta compartilhada. Em seguida, a mensagem cifrada é transmitida e depois decriptografada pelo receptor, que usa a mesma chave neste processo inverso.

Figura 2 – Processo da criptografia simétrica.

Fonte: adaptado de Carvalho, Duarte e Costa (2018).

Em geral, os algoritmos de chave simétrica são mais rápidos e aceitam diversos tamanhos de mensagens. Apesar disso, o compartilhamento da chave para todos os usuários de forma a mantê-la em segredo é a principal desvantagem destes métodos (MORENO; CHIARAMONTE; PEREIRA, 2005).

Existem duas classificações para os algoritmos simétricos: de fluxo e de bloco. Os algoritmos de fluxo (stream cyphers) operam em fluxos de dados criptografando bit a bit (ou byte a byte). Já os algoritmos de bloco (block cyphers) recebem mensagens de tamanhos fixos pré-definidos. Os algoritmos de bloco usam uma única chave para criptografar todos

(22)

Capítulo 2. REFERENCIAL TEÓRICO 22

os símbolos do bloco, enquanto os de fluxo, usam uma chave de criptografia para cada símbolo (JUST, 2012). Os algoritmos de chave simétrica mais utilizados são o DES e o AES, que são explicados a seguir.

Em 1977, o National Institute of Standards and Technology (NIST) selecionou o DES como Federal Information Processing Standard (FIPS PUB 46), ou seja, como o algoritmo padrão para criptografia (NIST, 1993). Com ele é possível codificar blocos fixos de 64 bits, usando uma chave de 56 bits. O bloco de texto cifrado de 64 bits é gerado após 16 iterações (BISHOP, 2005; STALLINGS, 2014).

Em 1997, o NIST lançou um concurso para a seleção de um algoritmo para substituir o DES como padrão. Após alguns anos de estudo e análise dos candidatos, em 2001, saíram os resultados e, desde então, o AES é o padrão FIPS-197 (NIST, 2001). Ele usa blocos de dados de tamanho fixo de 128 bits, organizados em uma matriz 4x4, chamados de State e aceita chaves de três tamanhos: 128 bits, 192 bits ou 256 bits (STALLINGS, 2014).

O AES, da mesma forma que outros algoritmos simétricos, a cada iteração, aplica a função criptográfica aos blocos da entrada. Dependendo do tamanho da chave - 128, 192 ou 256 bits - é definida a quantidade de iterações: 10, 12 ou 14, respectivamente. Em cada uma, são realizadas as seguintes transformações lineares e não lineares na matriz State (FELDHOFER; DOMINIKUS; WOLKERSTORFER, 2004; HODJAT et al., 2005):

1. SubBytes - cada byte da matriz State é substituído de acordo com uma tabela de substituição. Esta operação não-linear é chamada de operação S-Box;

2. ShiftRows - desloca as linhas da matriz, alterando sua ordem. A quantidade de bytes deslocados muda de uma linha para outra;

3. MixColumns - multiplica as colunas da matriz State por uma constante polinomial para transformar as colunas;

4. AddRoundKey - combina, por meio de uma operação XOR, a matriz resultante das operações anteriores e uma chave de 128 bits.

2.2.2 Criptografia Assimétrica

Também chamada de criptografia de chave pública, a criptografia assimétrica utiliza um par de chaves: uma chave privada e uma chave pública. Ambas podem ser utilizadas para criptografar uma mensagem, mas, depois de usar uma para gerar a cifra, apenas a outra pode decriptografá-la. Em outras palavras, se a criptografia for realizada com a chave pública, somente a respectiva chave privada poderá realizar a decriptografia, e vice-versa. Assim, é preciso que a chave privada seja mantida em segredo, enquanto a chave pública deve ser compartilhada com os outros usuários para que haja comunicação (STALLINGS, 2014).

A Figura 3 mostra como funciona a criptografia assimétrica. O emissor criptografa o texto aberto em texto cifrado usando a chave pública. Então o receptor utiliza a chave

(23)

Capítulo 2. REFERENCIAL TEÓRICO 23

privada para decriptografar a cifra, obtendo novamente a mensagem legível.

Figura 3 – Processo da criptografia assimétrica. Na primeira imagem, a chave pública é demonstrada pela cor azul. Já na segunda, a chave privada é denotada pela cor amarela.

Fonte: adaptado de Carvalho, Duarte e Costa (2018).

Por ter duas chaves, uma pública e a outra a ser mantida em segredo, um criptossistema de chave pública deve atender às seguintes condições (BISHOP, 2005):

1. Dada a chave apropriada, deve ser possível criptografar ou decriptografar uma mensagem;

2. A chave privada não pode ser derivada da chave pública;

3. Deve ser computacionalmente inviável derivar a chave privada por meio de ataques do tipo Texto Puro Escolhido1.

O algoritmo RSA (Rivest, Shamir, Adleman) é praticamente um sinônimo de criptografia de chave pública (KUROSE; ROSS; MARQUES, 2003). Apesar de ser consi-derado um algoritmo forte, sua principal desvantagem é a lentidão com que opera, pois geralmente utilizam-se chaves grandes para aumentar a segurança. Segundo Stapko (2007), uma das principais propriedades do RSA é que ele pode ser usado tanto para assegurar a confidencialidade na troca de mensagem, quanto para autenticação: uma entidade cripto-grafa uma mensagem com a chave privada e envia para alguém que tenha a chave pública, 1Texto Puro Escolhido: ataque em que o criptoanalista pode escolher o texto normal e conseguir seu

(24)

Capítulo 2. REFERENCIAL TEÓRICO 24

garantindo, assim, que o remetente é o dono da chave privada e, consequentemente, que foi ele quem assinou a mensagem.

Outro exemplo de algoritmo assimétrico são os baseados em curvas elípticas. Conhecidos pela sigla ECC (Elliptic Curve Cryptography), este tipo de algoritmo pode garantir o mesmo nível de segurança que o RSA usando chaves menores e mais compactas. Assim, o uso deste algoritmo é indicado para aplicações em sistemas embarcados, pois precisa de menos memória para ser executado e leva a um menor consumo de energia, entre outras vantagens (ZHANG et al., 2010).

Apesar de menos eficiente devido ao elevado número de cálculos necessários, o uso de algoritmos de chave pública é mais conveniente para o tráfego de pequenas quantidades de informação, já que não precisa efetuar troca prévia das chaves secretas (??).

2.2.3 Modos de Operação de Confidencialidade

Quando há necessidade de criptografar mensagens grandes com blocos de cifras repetidos, como em uma imagem, por exemplo, é possível usar métodos de estatística para conseguir decifrar a mensagem. Para contornar o problema, em 1980 o NIST anunciou o padrão FIPS 81, que define padrões de modo de operação - primeiramente para o DES, depois para todos os algoritmos de chave simétrica - especificando como a mensagem deve ser criptografada e decriptografada. Assim, foram definidos os modos de operação de

confidencialidade (RIBEIRO; ROIHA, 2006). São eles:

• Electronic Code Block - (ECB): ilustrado na Figura 4 é o modo mais simples dentre todos e já foi explicado anteriormente. No modo ECB, textos de entrada idênticos resultam em saídas cifradas idênticas, se a mesma chave for usada. Deste modo, o ECB não oculta possíveis padrões de dados. Por se tratar de um algoritmo em que a criptografia dos blocos é independente, caso um dos blocos contenha um erro, este não será propagado pelo restante da mensagem. Outra vantagem deste modo é a velocidade: por ser mais simples, também é mais rápido, sendo recomendado, portanto, para mensagens com poucos blocos, desde que sejam distintos entre si (RIBEIRO; ROIHA, 2006).

Figura 4 – Electronic Code Block (ECB) - operação de criptografar um bloco de cifras.

(25)

Capítulo 2. REFERENCIAL TEÓRICO 25

A Figura 5 ilustra o problema de blocos repetidos com a criptografia, usando uma imagem com vários pixels idênticos.

Figura 5 – A primeira imagem à esquerda, é a imagem original. A do centro foi obtida usando o modo ECB para criptografar a imagem original. A imagem à di-reita mostra como seria uma imagem cifrada a partir de um dos modos de confidencialidade.

Fonte: adaptado de Jayasinghe et al. (2014).

• Cipher Block Chaining - (CBC): este modo faz o uso de um vetor de inicialização (VI, do inglês Initialization Vector ), conforme mostra a Figura 6. Já na primeira iteração do algoritmo, é realizada uma operação XOR entre a mensagem e o IV. O resultado desta operação é o parâmetro de entrada que representa a mensagem legível para o algoritmo no modo ECB. Nos blocos subsequentes, essa confusão inicial é gerada utilizando a saída do bloco anterior, gerando, assim, a nova entrada para o processo de criptografia (JAYASINGHE et al., 2014). Daí o nome deste modo, pois encadeia o processo de cifragem da mensagem. Para que uma mesma mensagem gere um texto cifrado diferente, pode-se alterar a chave, o vetor de inicialização ou alterar o primeiro bloco, pois neste modo, cada bloco depende de seu antecessor. Ainda assim, um erro de bit em um dos blocos afeta apenas ele e seu sucessor. Porém, modificações em um bloco da mensagem durante a criptografia altera todos os blocos subsequentes. Assim, o CBC não é viável para se usar quando a o texto cifrado for transmitido por um canal com muito ruído, nem para aplicações que precisem de acesso aleatório para criptografar dados (RIBEIRO; ROIHA, 2006).

• Cipher Feedback - (CFB): neste modo, mostrado na Figura 7, o vetor de inicialização é criptografado primeiro, usando o modo ECB. Em seguida, é realizada uma operação XOR entre o vetor cifrado e o primeiro bloco. O resultado desta operação é novamente cifrado e a execução se repete até o final da mensagem (JAYASINGHE et al., 2014). A vantagem de se utilizar este método é a flexibilidade dos tamanhos de blocos que podem ser criptografados, permitindo o envio do texto cifrado sem delay de tempo. Como o processo para criptografar um bloco depende de seu antecessor, um erro de um único bit, ou uma mudança na ordem dos blocos,

(26)

Capítulo 2. REFERENCIAL TEÓRICO 26

Figura 6 – Cipher-Block Chaining (CBC) - operação de criptografar, com o auxílio de um Vetor Inicial.

Fonte: adaptado de JAYASINGHE et al., 2014

se propaga para os restante da mensagem, afetando a operação de decriptografia (RIBEIRO; ROIHA, 2006).

Figura 7 – Cipher FeedBack (CFB), operação de criptografar, com o auxílio de um Vetor Inicial.

Fonte: adaptado de JAYASINGHE et al., 2014

• Output Feedback - (OFB): Assim, como o CFB, neste modo, o primeiro passo é criptografar o vetor de inicialização e depois a mensagem é cifrada usando uma operação XOR entre ela e a saída criptografada. Entretanto, como mostra a figura 8, na iteração seguinte, o vetor criptografado é usado novamente como entrada do algoritmo. Assim, este modo é indicado para aplicações em que propagações de erros deve ser evitadas (RIBEIRO; ROIHA, 2006).

• Counter - (CTR): Neste modo de operação não há vetor de inicialização. No lugar deste, há um Contador, formado por uma cadeia de caracteres aleatórios, chamado

nonce, que em geral, sofre um incremento de uma unidade a cada realimentação, como

ilustra a figura 9. Isto ocorre para diminuir as chances de gerar uma combinação repetida de caracteres. Este contador é criptografado e a saída do algoritmo é usada em uma operação XOR para gerar o texto criptografado (JAYASINGHE et al., 2014). As principais vantagens apontadas por Ribeiro e Roiha (2006) incluem a eficiência, sem afetar a segurança, além de permitir acesso aleatório, ou seja, a mensagem

(27)

Capítulo 2. REFERENCIAL TEÓRICO 27

Figura 8 – Output Feedback - (OFB), operação de cifrar, com o auxílio de um Vetor Inicial.

Fonte: JAYASINGHE et al., 2014

cifrada pode ser transmitida fora de ordem sem afetar a decriptografia.

Figura 9 – Counter - (CTR), operação de cifrar usando um contador.

Fonte: adaptado de JAYASINGHE et al.

A tabela 1 mostra as principais características de cada um dos modos de confi-dencialidade do AES.

Tabela 1 – Resumo dos modos de operação de confidencialidade do AES

Modos de Operação ECB CBC CFB OFB CTR

Formação de livro texto sim não não não não

Complexidade Computacional muito baixa média média média baixa

Uso de vetor inicial não sim sim sim não

Paralelizável sim não não não sim

Uso de padding sim sim sim não sim

Efeito de erros de bits em um texto cifrado (por ocasião da decriptografia)

Aleatório Aleatório / Específico

Específico /

Aleatório Específico Específico Efeito do erro de bits no VI

(por ocasião da decriptografia) N/A Específico Aleatório Aleatório N/A

Fonte: Adaptado de (RIBEIRO; ROIHA, 2006).

2.3 Arduino

O Arduino nasceu no Instituto de Design de Interação de Ivrea (Interaction

(28)

Capítulo 2. REFERENCIAL TEÓRICO 28

para estudantes que não possuem conhecimento prévio em eletrônica ou programação. McRoberts (2015) define o Arduino como um pequeno computador, capaz de se comunicar com dispositivos e componentes externos a ele conectados. É uma plataforma de computação embarcada, programável para processar entradas e saídas, interagindo com o ambiente ao seu redor. O Arduino pode ser usado para criar artefatos interativos, que podem se conectar a um computador, celular, ou à internet, enviando e recebendo dados de sensores e atuando sobre eles.

O Arduino utiliza seu próprio ambiente integrado de desenvolvimento (Integrated

Development Environment - IDE), o Arduino Software. Essa IDE, baseada em Processing2,

é open source, ou seja, de fonte aberta. Já sua linguagem de programação é baseada em

Wiring3, um framework open source para microcontroladores.

Além disso, o hardware também é open source, possibilitando que esquemas e códigos-fontes sejam utilizados para que qualquer pessoa possa usar livremente e, se necessário, adaptá-las às suas necessidades. Assim, conforme a comunidade de usuários foi aumentando, diversos novos modelos de placas, módulos e bibliotecas foram desenvol-vidos para atender às demandas que foram surgindo como IoT, wearables, entre outros (ARDUINO, 2019g; MCROBERTS, 2015).

Exitem diversos modelos de Arduino, com recursos e características diferentes. Foram utilizados quatro tipos diferentes para os testes neste trabalho:

• Arduino Uno: é a versão mais usada e documentada de Arduino, por isso é a mais recomendada para iniciantes. Baseado em ATmega328P, o Arduino Uno tem 2kB de SRAM, além de 1kB de EEPROM e 32kB de memória flash, dos quais 0,5kB são usados pelo bootloader (ARDUINO, 2019e);

• Arduino Esplora: desenvolvido a partir do Arduino Leonardo, este modelo é baseado no microcontrolador ATmega32U4. Possui sensores e atuadores integrados, por isso é indicado para quem quer começar a desenvolver projetos sem ter que aprender eletrônica. O Arduino Esplora tem 2,5kB de memória SRAM, EEPROM de 1kB e 32kB de memória flash. Assim como o Arduino Uno, o Esplora é considerado um modelo de entrada (ARDUINO, 2019c);

• Arduino 101: também considerado um modelo de entrada, o Arduino 101 é o único modelo equipado com processador Intel Curie, com 2 core - um x86 (Quark) e um 32-bit ARC. Seu módulo de memória é compartilhado entre ambos processadores, sendo que os códigos podem ocupar 24kB dos 80kB de SRAM e 196kB dos 384kB de memória flash (ARDUINO, 2019a);

• Arduino Mega: é um microcontrolador baseado em ATMega2560, com 256kB de memória flash para armazenar os códigos. Devido à quantidade maior de portas disponíveis, o Arduino Mega é indicado para projetos mais complexos, como de

2https://processing.org/ 3http://wiring.org.co/

(29)

Capítulo 2. REFERENCIAL TEÓRICO 29

robótica e impressoras 3D (ARDUINO, 2019d);

• Arduino Due: foi o primeiro Arduino baseado em um microcontrolador 32 bits, o Atmel SAM3X8E ARM Cortex-M3 CPU. Possui 512kB de memória flash dividida em dois blocos para armazenar o código. Já a memória SRAM está dividida em dois blocos: um de 64kB e outro de 32kB, totalizando 96kB (ARDUINO, 2019b).

A tabela 2 mostra, de modo resumido, a comparação entre os modelos utilizados neste trabalho.

Tabela 2 – Comparação de especificações de placas

Modelo

Processador

Velocidade

de CPU

SRAM

Flash

EEPROM

Uno

ATMega328P

16MHz

2kB

32kB

1kB

101

Intel Curie

32MHz

24kB /

80kB

196kB /

384kB

-Esplora

ATmega32U4

16MHz

2,5kB

32kB

1kB

Mega 2560

ATmega2560

16MHz

8kB

256kB

4kB

Due

ATSAM3X8E

84MHz

96kB

512kB

-Fonte: Adaptado de (ARDUINO, 2019f).

2.4 Trabalhos Relacionados

O estudo de criptografia demanda a frequente investigação de novos métodos que estejam compatíveis com os avanços em geral na área de computação (APRIL; NO; KULKARNI, 2017; SILVA et al., 2016). É normal que esses estudos adaptem-se a cada tipo de dispositivo, podendo atender à necessidade de segurança em diferentes níveis e em dispositivos com diferentes características de hardware e software (SILVA et al., 2016).

A proposta do trabalho é estudar e aplicar algoritmos criptográficos em plataformas Arduino, conhecidos por serem dispositivos limitados em processamento e memória, porém, ainda assim, muito utilizados em aplicações ligadas à Internet das Coisas devido à sua versatilidade, custo e simplicidade. Com cada vez mais problemas ligados à segurança associados à Internet das Coisas (ASWATHY; MALARVIZHI, 2018; MAHMOUD et al., 2015; WURM et al., 2016), a importância de se estudar técnicas criptográficas adequadas a placas Arduino aumenta, sendo imprescindível encontrar soluções que não comprometam o desempenho destes dispositivos.

De modo geral, Mahmoud et al. (2015) investigaram os problemas de segurança que podem ser vistos na área de Internet das Coisas e afirmaram que o futuro da área depende da solução desses problemas de modo assertivo. Para isso, eles especificam problemas

(30)

Capítulo 2. REFERENCIAL TEÓRICO 30

de segurança em diferentes camadas da arquitetura de dispositivos IoT e demonstram algumas medidas propostas na literatura.

Mais recentemente, um novo estudo sobre o mesmo tema foi publicado por Frustaci et al. (2018), onde uma análise de problemas considerados críticos é apresentada. Entre as medidas citadas pelos autores de ambos os estudos, existe um claro destaque para técnicas de criptografia.

Na área industrial, a Internet das Coisas também ganha espaço, principalmente com o advento da Indústria 4.0 (LU, 2017; XU; XU; LI, 2018).

O estudo publicado por Wurm et al. (2016) demonstra a importância de se abordar problemas de segurança ligados à IoT Industrial para que o futuro da área não seja comprometido.

O aspecto de segurança é novamente abordado por Aswathy e Malarvizhi (2018) e Ometov et al. (2016), evidenciando a necessidade de se estudar técnicas mais adequadas para dispositivos com limitações em recursos.

Quando se pensa em dispositivos embarcados, preocupações ligadas à economia de energia aparecem com bastante frequência. A aplicação de segurança vai de encontro ao conceito de economia de energia, sendo importante investigar métodos criptográficos que impactem o mínimo possível no consumo de energia. Em Potlapally et al. (2006) os autores investigam questões ligadas ao consumo de energia em dispositivos móveis especificamente no contexto do Secure Sockets Layer (SSL), um protocolo de amplo uso.

De modo similar, Toldinas et al. (2014) efetuam comparações entre os principais algoritmos criptográficos no tocante ao consumo de energia.

2.5 Considerações finais

Os estudos na área de segurança frequentemente envolvem experimentações com criptografia. Esta, por sua vez, pode ser implementada basicamente de duas maneiras, sendo os algoritmos simétricos considerados mais adequados para grandes quantidades de dados, enquanto que os assimétricos proveem uma dinâmica entre as chaves pública e privada que podem ser essenciais para garantir segurança de pequenas mensagens e operações de assinatura digital.

Na área de sistemas embarcados existe uma preocupação com segurança que impõe limites quanto a recursos computacionais, os quais são geralmente restritos nestes dispositivos. Dispositivos de Internet das Coisas, em sua maioria, podem ser considerados sistemas embarcados, portanto compartilham dos mesmos desafios já estudados na área de embarcados. Os artigos mostrados neste capítulo deixam clara a crescente necessidade de se resolver problemas de segurança ligados à área de IoT, principalmente porque, sem abordagens que garantam a segurança, pode haver um comprometimento do futuro da área. Isso poderia atingir todos os segmentos de IoT, inclusive as redes industriais que estão em ampla expansão.

(31)

Capítulo 2. REFERENCIAL TEÓRICO 31

O Arduino é uma plataforma de fácil utilização, baixo custo e com funcionalidades básicas que vão ao encontro de grande parte dos dispositivos IoT vistos em aplicações atuais. Com a limitação de recursos dessa plataforma, é muito importante investigar algoritmos de criptografia que respeitem essas condições. Alguns estudos com criptografia para embarcados apresentaram resultados para Arduino, mas existe espaço para novos estudos, principalmente considerando-se a elevada quantidade de técnicas criptográficas existentes. A importância da realização deste trabalho, portanto, justifica-se diante do estado da arte apresentado neste capítulo.

(32)

32

3 METODOLOGIA

Este capítulo apresenta a metodologia adotada para a realização da avaliação de desempenho. Além disso, mostra as plataformas utilizadas nos experimentos, bem como as bibliotecas e as razões das escolhas.

3.1 Avaliação de Desempenho para Sistemas Computacionais

Para planejar experimentos e avaliar resultados, técnicas de avaliação de desem-penho em sistemas computacionais propostas por Jain (1991) foram adotadas. Quando se leva em conta as limitações de recursos de sistemas embarcados, torna-se ainda mais importante encontrar um ponto de equilíbrio aceitável entre segurança e desempenho.

Usuários de computadores, administradores e projetistas demonstram interesse em avaliação de desempenho, uma vez que o objetivo da técnica é obter resultados que possibilitem atingir ou prover a maior performance possível com o menor custo. A avaliação de desempenho pode ser útil para determinar a melhor configuração de um determinado cenário de software e/ou hardware associados, permitindo aferir qual deles é mais eficiente na solução de um problema e o quão melhor ele é em relação às demais opções disponíveis.

Antes de explicar a metodologia, é importante citar alguns termos adotados por Jain (1991):

• Variável de resposta: métrica que será avaliada durante o experimento; • Fatores: variáveis que afetam a resposta do sistema;

• Níveis: valores que os fatores podem assumir.

Segundo Jain (1991) os passos necessários para se realizar uma avaliação de desempenho sistemática são:

1. Definir os objetivos e o sistema: o primeiro passo em qualquer avaliação de desempenho é definir os objetivos do estudo e o que constitui o sistema, estabelecendo suas fronteiras;

2. Listar serviços e saídas: quando um usuário solicita qualquer um desses serviços, existe uma série de saídas possíveis. Algumas dessas saídas são desejáveis e outras não, portanto é necessário saber quais variáveis de resposta serão monitoradas; 3. Selecionar métricas: o próximo passo é selecionar os critérios para comparar

a performance. Esses critérios são chamados métricas. Em geral, as métricas são relacionadas com velocidade, precisão e disponibilidade dos serviços;

4. Listar parâmetros: trata-se dos parâmetros que afetam a performance;

5. Selecionar fatores para estudo: a lista de parâmetros pode ser dividida em duas partes: aqueles que serão variados durante a avaliação e aqueles que permanecerão constantes. Os parâmetros que serão variados são denominados fatores e seus valores

(33)

Capítulo 3. METODOLOGIA 33

são denominados níveis;

6. Selecionar a técnica de avaliação: as três abordagens para avaliação de desem-penho são: modelagem analítica, simulação e aferições em sistemas reais. A seleção da técnica correta depende do tempo e recursos disponíveis para resolver o problema e o nível desejado de precisão;

7. Selecionar a carga de trabalho: a carga de trabalho consiste em uma lista de requisições de serviços ao sistema, que busca ser semelhante à carga de trabalho normalmente executada por um sistema do tipo avaliado;

8. Projeto de experimentos: define-se uma sequência de experimentos que forneça o máximo de informação com o mínimo de execuções;

9. Analisar e interpretar dados: é importante avaliar os resultados obtidos e conhe-cer bem o sistema avaliado, podendo identificar discrepâncias nos testes executados que poderão interferir nas conclusões da avaliação;

10. Apresentar resultados: o passo final para todos os projetos de desempenho é apresentar os resultados de modo que seja fácil o entendimento. Isso geralmente necessita que os resultados sejam apresentados em forma de gráficos.

Uma carga de trabalho pode ser real ou sintética. Real é aquela observada em um sistema sendo usado para operações normais. Ela não pode ser repetida, e portanto, não é recomendada para o uso como carga de trabalho de testes. Em vez disso, uma carga de trabalho sintética, cujas características são semelhantes às da carga de trabalho real e que pode ser aplicada várias vezes de forma controlada, é desenvolvida e utilizada para estudos (JAIN, 1991).

O objetivo de um projeto de experimentos adequado é obter o máximo de in-formação com o mínimo de experimentos. Isso economiza um trabalho considerável que teria sido gasto com a coleta dos dados. A análise adequada de experimentos também ajuda a separar os efeitos de vários fatores que podem afetar o desempenho. Além disso, permite determinar se um fator tem um efeito significativo ou se a diferença observada é simplesmente devido a variações aleatórias causadas por erros de medição e parâmetros que não foram controlados (JAIN, 1991).

Os três modelos de projeto de experimentos mais utilizados são (JAIN, 1991): • Fatorial simples: inicia o projeto com configuração típica e varia cada fator, um

por vez, e analisa a influência deste fator no desempenho;

• Fatorial completo: realiza os testes com odas as combinações de níveis fatores possíveis. A principal vantagem é poder examinar todas as combinações e cargas de trabalho;

• Fatorial parcial: quando a quantidade de experimentos necessários para o modelo fatorial completo, é possível variar apenas uma parte dos fatores e fazer a análise desses resultados.

(34)

Capítulo 3. METODOLOGIA 34

um sistema, porque não apresenta nenhuma informação sobre espalhamento dos dados. Por exemplo, nos conjuntos A = {19, 20, 21} e B = {5, 10, 45} a média é a mesma, (20), porém o espalhamento destes dados é diferente (PIGATTO, 2012).

Para determinar o grau de dispersão dos dados em relação à média, deve-se calcular o desvio padrão e a variância da amostra. A variância é representada pela letra grega σ2, e calculada sobre uma amostra usando a Equação 1, em que n corresponde à quantidade de elementos da amostra e (xi− ¯x)2 é o quadrado da distância entre o valor de

uma amostra xi e a média do conjunto de valores ¯x. O quadrado da diferença é utilizado

para computar o valor absoluto da distância (PIGATTO, 2012).

σ2 = n X i=1 (xi− ¯x)2 n − 1 (1)

O desvio padrão, representado por σ, é obtido calculando a raiz quadrada da variância (Equação 2). Apesar de ter a mesma função da variância, é mais vantajoso na hora de interpretar a variação porque é expresso na mesma unidade de medida dos dados (PIGATTO, 2012).

σ =variancia =σ2 (2)

3.1.1 Intervalo de Confiança

A estimativa perfeita da média seria encontrada realizando um número infinito de amostras, o que é impossível de ser feito. Por isso, é comum adotar o cálculo de limites probabilísticos (intervalo de confiança), c1 e c2, de modo que a média exata ¯x esteja no intervalo [c1, c2], com uma certa probabilidade (1 − α) de acerto. A Equação 3 representa o cálculo da probabilidade de um intervalo de confiança estar correto, em que α é o nível de significância e 1 − α é o coeficiente de confiança (PIGATTO, 2012).

P (c1 ≤ ¯x ≤ c2) = 1 − α (3)

Geralmente, o intervalo de confiança é representado como um percentual próximo a 100%, por exemplo, 90% ou 95%. Por sua vez, o nível de significância α é denotado como um número decimal, normalmente próximo de zero, como 0,05 ou 0,1 (??).

3.1.2 2K Fatorial Completo

O fatorial completo é usado para descrever a influência de cada um dos fatores avaliados em relação a uma variável de resposta, segundo os níveis escolhidos. É obtido através de um modelo de regressão linear da forma como o aa Equação 4 (exemplo com 2 fatores, ou K = 2) (PIGATTO, 2012).

(35)

Capítulo 3. METODOLOGIA 35

Em que y é a variável de resposta e xw (w é o fator, nesse caso A e B) pode

assumir os valores -1 e 1 para representar cada um dos 2 níveis escolhidos. Combinando os níveis dos fatores, temos 2k=2 cenários:

y1 = q0− qA− qB+ qAB

y2 = q0+ qA− qB− qAB

y3 = q0− qA+ qB− qAB

y4 = q0+ qA+ qB+ qAB

(5)

Assim, é possível calcular os valores de qw em relação à variável de resposta de

cada um dos cenários:

q0 = 14(y1+ y2+ y3+ y4)

qA = 14(−y1+ y2− y3+ y4)

qB = 14(−y1− y2+ y3+ y4)

qAB = 14(y1− y2− y3+ y4)

(6)

A importância de um fator é denotada através da proporção de variação total da variável de resposta influenciada por esse fator. Se um fator é responsável por 5% e outro fator por 95% da variação total, então o primeiro fator pode ser considerado não importante. Na Equação 1, o dividendo é chamado de variação total de y ou soma dos quadrados total (SST 1), conforme a Equação 7, em que K é a quantidade de fatores,

yi é a variável de resposta para o experimento i e ¯y é a média da variável de resposta

(PIGATTO, 2012). Variação total de y = SST = 2K X i=1 (yi− ¯y)2 (7)

Fazendo k = 2, é possível dividir a variação em três partes, como mostra a Equação 8 (PIGATTO, 2012).

SST = 22qA2 + 22q2B+ 22qAB2 (8)

O lado direito da equação possui três partes que representam, respectivamente, a porção da variação total relacionada aos fatores A, B e à combinação AB. Logo, 22q2

A é a

porção de SST influenciada pelo fator A e é denotado por SSA. Do mesmo modo, SSB é 22q2B e SSAB é 22qAB2 . Assim obtém-se a Equação 9 (PIGATTO, 2012).

SST = SSA + SSB + SSAB (9)

(36)

Capítulo 3. METODOLOGIA 36

A fração explicada pelo fator A pode ser espressada através da Equação 10, assim como o fator B e a combinação AB (PIGATTO, 2012).

Fração da variação explicada por A = SSA

SST (10)

Quando representada em porcentagem, essa fração denota a importância do fator

A. Os fatores considerados importantes são aqueles com alta porcentagem de variação

(PIGATTO, 2012).

3.2 Arduino

Para a análise do desempenho de hardware durante a execução dos testes, foram utilizados cinco modelos de Arduino, sendo três modelos de entrada - UNO, Esplora e 101 - e dois modelos mais avançados - Mega e Due. Também foram utilizados módulos Data

Loggers, para permitir leitura e escrita de arquivos em cartão microSD através do driver

de interface Serial Peripheral Interface (SPI)2 (DUNN, 2016).

3.3 Ambiente Integrado de Desenvolvimento

Para a realização deste experimento, foi utilizada a própria IDE do Arduino. Existe a biblioteca Arduino Cryptography Library3, com a implementação de diversos algoritmos de criptografia e exemplos de usos disponíveis como ponto de partida, além da SD Library4, que provê funções para acesso de leitura e escrita em cartão de memória através de um leitor ou data logger.

3.4 Advanced Encryption Standard - AES

Para este trabalho, optou-se usar o Advanced Encryption Standard (AES, ou Padrão de Criptografia Avançada, em português), por se tratar do algoritmo escolhido pelo NIST como o padrão (NIST, 2001). Conforme detalhado no capítulo 2, o AES possui diversos modos de operação.

3.5 Planejamento dos Experimentos

Para se obter os melhores resultados neste experimento, adotou-se o modelo

fatorial completo proposto por Jain (1991), que permite examinar todas as combinações

de carga de trabalho possíveis, uma vez que todas as combinações de níveis e fatores são utilizadas. Cada uma dessas combinações entre placa, chave e modo de operação foi testada 15 vezes para criptografar e, em seguida, decriptografar uma mensagem de tamanho 50kB,

2https://www.arduino.cc/en/Reference/SPI Acesso em 25 de novembro de 2019. 3https://rweather.github.io/arduinolibs/index.html Acesso em 25 de novembro de 2019. 4https://www.arduino.cc/en/Reference/SD Acesso em 25 de novembro de 2019.

(37)

Capítulo 3. METODOLOGIA 37

considerando que os dados em aplicações de IoT, em geral, transmitem mensagens curtas (SOUSA et al., 2018).

A Tabela 3 mostra as configurações utilizadas neste estudo. O fator modo de operação pode assumir quatro valores, sendo cada um deles um modo de confidencialidade do AES, discutidos na seção 2.2.3. O tamanho da chave também variou entre dois valores - 128 e 256 bits - de modo que se tornasse possível avaliar o impacto da mudança no tempo de processamento. Já os modelos escolhidos para placa podem assumir um dentre cinco valores: Uno, Esplora, 101, Mega ou Due.

Tabela 3 – Configurações do experimento.

Fatores Níveis

Modos de operação ECB, CBC, CFB, OFB Tamanhos de chave 128 bits, 256 bits

Modelos de Placa Uno, Esplora, 101, Mega, Due

Fonte: a autora.

A métrica avaliada foi o tempo médio de resposta, considerando o tempo que leva para:

1. Abrir o arquivo de entrada;

2. Transferir 16 bytes para um buffer ; 3. Fechar o arquivo de entrada;

4. Criptografar ou decriptografar os bytes do buffer ; 5. Abrir o arquivo de saída;

6. Escrever o texto cifrado neste arquivo; 7. Fechar o arquivo de saída;

8. Repetir o processo até que a leitura do arquivo de entrada chegue ao final.

A sequência de passos acima foi definida com base na limitação do modo de confidencialidade ECB, implementado pelos criadores da biblioteca Crypto, que aceita apenas blocos de 16 bytes. O tempo foi medido através da função micros do Arduino. Antes de começar a execução dos passos acima, a função foi chamada para registrar o momento em que cada teste começava. Depois de decodificar o arquivo, foi calculada a diferença entre o momento inicial e o momento final. O resultado ficava armazenado em um vetor e ao final de todas as 15 execuções, os tempos transcorridos, em microssegundos, foram registrado em um arquivo no formato Comma Separated Value (CSV) para análise.

(38)

38

4 RESULTADOS

Este capítulo tem como objetivo detalhar os experimentos realizados. Conforme mencionado no capítulo 3, foi utilizada a metodologia de Jain (1991) para a avaliação de desempenho comparando a média de tempo para criptografar e decriptografar uma mensagem utilizando os modos ECB, CBC, CFB e OFB do AES, com chaves de tamanho 128 bits e 256 bits em cinco plataformas Arduino distintas, sendo três modelos de entrada - UNO, Esplora e 101 - e dois modelos avançados - Mega e Due.

O gráfico apresentado na Figura 10 mostra o tempo médio para a somatória dos processos de criptografia e decriptografia do arquivo de 50 KB. O valor pequeno da variância mostra um menor espalhamento de dados dentro dos resultados das amostras.

Figura 10 – Tempo médio de execução para operações de criptografia e decriptografia. Os rótulos flutuantes representam o desvio padrão calculado para cada uma das amostras.

ECB-128 ECB-256 CBC-128 CBC-256 CFB-128 CFB-256 OFB-128 OFB-256 DUE 193,1356035 192,9777627 194,5272575 190,3001757 191,4924032 194,1683233 193,7250323 191,7561876 MEGA 213,7162885 215,8675368 212,3062845 213,7430501 212,3720155 213,7888613 212,3101845 213,7584917 ESPLORA 288,0053077 283,2223733 280,9606555 270,1731179 273,3817608 278,9571216 264,6954288 213,4119656 101 254,7143845 255,4137261 254,3692657 254,8999193 254,3589165 254,8912911 254,3659748 254,8983799 UNO 212,6538677 0 0 0 0 0 0 0 ±2,09 ±2,30 ±2,36 ±2,14 ±2,16 ±2,87 ±3,09 ±2,29 ±0,01 ±0,02 ±0,02 ±0,02 ±0,10 ±0,01 ±0,02 ±0,01 ±2,62 ±1,54 ±2,25 ±1,05 ±1,90 ±2,08 ±0,41 ±0,07 ±0,04 ±0,03 ±0,03 ±0,02 ±0,02 ±0,03 ±0,01 ±0,01 ±0,02 0 0 0 0 0 0 0 0 50 100 150 200 250 300 Tempo ( s) DUE MEGA ESPLORA 101 UNO Fonte: a autora.

Não foi possível realizar todos os testes com a placa Uno devido ao tamanho reduzido da memória SRAM. Ao carregar um código para esta plataforma, todas as variáveis, por padrão, são alocadas na memória RAM. Há uma macro para salvá-las na memória flash. Entretanto, para não penalizar este modelo em detrimento de outros, resolveu-se efetuar os testes carregando o código de maneira padrão. Mesmo assim, por este ser o modelo mais popular e documentado de Arduino, optou-se por mantê-lo na análise geral. O único teste que funcionou foi utilizando o modo ECB, que não usa VI, com uma chave de 128 bits, a menor utilizada nos testes.

(39)

Capítulo 4. RESULTADOS 39

Dentre os testes que foram executados com sucesso, percebe-se que os modelos avançados (Due e Mega) apresentaram respectivamente os melhores resultados, sendo que o Arduino Due obteve melhor desempenho dentre todas os modelos.

Com o objetivo de efetuar uma comparação de desempenho mais detalhada, tratando de forma mais justa os modelos de entrada e avançados de Arduino, foram definidos quatro casos de testes. Os casos foram definidos com base na categoria dos microcontroladores e nas similaridades dos modos de operação do AES. As seções 4.1 e 4.2 apresentam as comparações entre os modelos Esplora e 101 enquanto as seções 4.3 e 4.4 comparam os modelos Mega e Due.

4.1 Estudo de Caso 1: ECB e CBC em Arduinos Modelos de Entrada

Neste primeiro estudo de caso, considerou-se apenas os resultados obtidos nas plataformas 101 e Esplora executando o algoritmo nos modos ECB e CBC, com chaves de tamanhos 128 e 256 bits, conforme a tabela 4.

Tabela 4 – Configurações do experimento do Estudo de Caso 1.

Experimento Fator A (Modelo de Placa) Fator B (Modo de Operação) Fator C (Tamanho da Chave)

1 ESPLORA ECB 128 bits

2 ESPLORA ECB 256 bits

3 ESPLORA CBC 128 bits 4 ESPLORA CBC 256 bits 5 101 ECB 128 bits 6 101 ECB 256 bits 7 101 CBC 128 bits 8 101 CBC 256 bits Fonte: a autora.

Os resultados obtidos com estas combinações foram usados para gerar o gráfico da Figura 11. Pode-se observar que houve pouco espalhamento de resultado dentro da amostra, considerando o pequeno desvio padrão da amostra.

A importância do fator é medida pela proporção de influência que este fator tem no resultado final, ou seja, pela variação da resposta influenciada por ele. No gráfico da Figura 12 estão ilustradas as parcelas de influência de cada fator. Neste estudo de caso, o modelo escolhido de placa (Fator A) foi o fator de maior influência com 88,56%. Em seguida está o modo de operação (Fator B) com 3,67% de influência. A associação dos dois fatores representa uma influência de 3,09%. O tamanho da chave (Fator C), quando combinado com o modelo de Arduino, ocupa o quarto lugar na importância, com 2,36%, e sozinho fica em quinto lugar com 1,72%. As menores importâncias são das combinações de todos os fatores, com 0,28% e a combinação entre tamanho de chave e modo de operação, com 0,32%.

Estes resultados mostram que a variação da chave, nestas condições, não foi fator de muita relevância, assim como o modo de operação. Neste caso, o tempo de resposta depende principalmente do modelo de Arduino usado no experimento.

(40)

Capítulo 4. RESULTADOS 40

Figura 11 – Comparação do tempo médio de execução entre os modos ECB e CBC nos modelos Arduino Esplora e Arduino 101 com chaves de 128 bits e 256 bits. Os rótulos flutuantes representam o desvio padrão calculado para cada uma das amostras.

ECB 128 bits CBC 128 bits ECB 256 bits CBC 256 bits

Esplora 288,01 283,22 280,96 270,17 101 254,71 255,41 254,37 254,90 ±2,62 ±1,54 ±2,25 ±1,05 ±0,04 ±0,03 ±0,03 ±0,02 230,00 240,00 250,00 260,00 270,00 280,00 290,00 300,00 Esplora 101 Fonte: a autora.

Figura 12 – Influência de fatores para execução entre os modos ECB e CBC nos modelos Arduino Esplora e Arduino 101 com chaves de 128 bits e 256 bits.

A (Modelo Placa); 88,56% B (Modo de Operação); 3,67% C (Tam. Da Chave); 1,72% AB; 3,09% AC; 2,36% BC; 0,32% ABC; 0,28% Fonte: a autora.

(41)

Capítulo 4. RESULTADOS 41

4.2 Estudo de Caso 2: CFB e OFB em Arduinos Modelos de Entrada

Prosseguindo com a análise dos modelos de entrada, neste segundo caso foram avaliados os resultados obtidos através dos modos Cipher Feedback (CFB) e Output

Feedback (OFB), também com chaves de tamanhos 128 e 256 bits, conforme a tabela 5.

Tabela 5 – Configurações do experimento do Estudo de Caso 2.

Experimento Fator A (Modelo de Placa) Fator B (Modo de Operação) Fator C (Tamanho da Chave)

1 ESPLORA CFB 128 bits

2 ESPLORA CFB 256 bits

3 ESPLORA OFB 128 bits

4 ESPLORA OFB 256 bits

5 101 CFB 128 bits

6 101 CFB 256 bits

7 101 OFB 128 bits

8 101 OFB 256 bits

Fonte: a autora.

O tempo médio de execução de cada um dos experimentos deste caso pode ser encontrado no gráfico da Figura 13. Assim como no caso anterior, é possível perceber que o Arduino 101 obteve o menor tempo médio na maioria dos casos, exceto na execução do modo OFB com chave de 256 bits.

A Figura 14 ilustra as parcelas de influência de cada um dos fatores deste estudo de caso. O modelo de placa escolhido neste caso representou apenas 1% de influência nos resultados quando analisado isoladamente. Entretanto, a associação com outros fatores possui maior impacto. A combinação entre modelo de placa e modo de operação representa 25%, modelo de placa e tamanho de chave, 10% e a combinação dos três fatores, 15%. Desta forma, é possível dizer que a placa representa pouco mais da metade da influência do experimento, ainda que associado a outro fator. O modo de operação sozinho responde por 25%, o tamanho da chave, 9% e a combinação de ambos, 10%.

(42)

Capítulo 4. RESULTADOS 42

Figura 13 – Comparação do tempo médio de execução entre os modos CFB e OFB nos modelos Arduino Esplora e Arduino 101 com chaves de 128 bits e 256 bits. Os rótulos flutuantes representam o desvio padrão calculado para cada uma das amostras.

CFB 128 bits OFB 128 bits CFB 256 bits OFB 256 bits

Esplora 273,38 278,96 264,70 213,41 101 254,36 254,89 254,37 254,90 ±1,90 ±2,08 ±0,40 ±0,07 ±0,02 ±0,03 ±0,01 ±0,01 0,00 50,00 100,00 150,00 200,00 250,00 300,00 Esplora 101 Fonte: a autora.

Figura 14 – Influência de fatores para execução entre os modos CFB e OFB nos modelos Arduino Esplora e Arduino 101 com chaves de 128 bits e 256 bits.

A (Modelo Placa); 1% B (Modo de Operação); 25% C (Tam. Da Chave); 9% AB; 25% AC; 10% BC; 15% ABC; 15%

A (Modelo Placa) B (Modo de Operação) C (Tam. Da Chave) AB AC BC ABC

Referências

Documentos relacionados

Os espectros de absorção obtidos na faixa do UV-Vis estão apresentados abaixo para as amostras sintetizadas com acetato de zinco e NaOH em comparação com a amostra ZnOref. A Figura

Considerando que a maioria dos dirigentes destas entidades constituem-se de mão de obra voluntária e na maioria das vezes sem formação adequada para o processo de gestão e tendo

A compatibilidade entre desemulsificante, floculante e inibidor de incrustação foi avaliada por meio de testes de formação de depósitos, tensão superficial e/ou interfacial

Preliminarmente, alega inépcia da inicial, vez que o requerente deixou de apresentar os requisitos essenciais da ação popular (ilegalidade e dano ao patrimônio público). No

Em caso de não cumprimento da obrigação do pagamento mínimo acordado, a UNICRE poderá exigir até efectivo pagamento da obrigação, juros moratórios correspondentes à soma da taxa

A administração de eserina em ratos tratados com veí- culo e 100 ug/kg de T3, por período de 1 dia não produziu dife- renças significativas no tempo de catalepsia dos dois

1 Instituto de Física, Universidade Federal de Alagoas 57072-900 Maceió-AL, Brazil Caminhadas quânticas (CQs) apresentam-se como uma ferramenta avançada para a construção de

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá