Análise de Viabilidade da Biblioteca de

Propaganda
Análise de Viabilidade da Biblioteca de Criptografia
TinyECC em Redes de Sensores Sem Fio
Daniel A. Merege1, Cíntia B. Margi2
1
Escola de Artes, Ciências e Humanidades – Universidade de São Paulo (USP)
São Paulo – SP – Brasil
2
Escola Politécnica – Universidade de São Paulo (USP)
São Paulo – SP – Brasil
{dmerege,cintia}@usp.br
Abstract. Currently, wireless sensors networks (WSN) applications demanding
security are more common. To deal with this issue, recently, an elliptic curve
cryptography package for wireless sensors networks applications was
presented: TinyECC. The main contribution of this work, given WSN platforms
constraints, is to analyze the viability and the security level of TinyECC, when
applied to a real application using encrypted messages exchange between
TelosB sensor nodes.
Resumo. Atualmente, aplicações de Redes de Sensores sem Fio (RSSF) com
necessidades de segurança têm se tornando comuns. Para lidar com essa
questão, recentemente, foi proposta a biblioteca de criptografia de
curvas elípticas TinyECC. O objetivo deste trabalho é, considerando as
restrições das plataformas de RSSF, analisar a viabilidade e nível de
segurança na utilização dessa biblioteca, utilizando uma aplicação real
de trocas de mensagens criptografadas entre nós sensores com a
plataforma TelosB.
1. Introdução
As aplicações para a tecnologia de sensores1 são as mais variadas possíveis. Encontramse esses equipamentos nas áreas de agricultura, pecuária e militar; no monitoramento de
mudanças climáticas e do meio ambiente. Esses dispositivos, quando conectados em
rede, podem trocar dados entre si e aumentar o poder de aplicação. São baratos,
possuem baixo custo de comunicação e podem extrair dados riquíssimos de fenômenos
físicos para pesquisas. No entanto, por serem de baixo custo, possuem configurações
restritas de hardware e, portanto, são limitados, tanto na velocidade de processamento,
quanto na capacidade de armazenamento e largura de banda [CULLER et al. 2004].
Adicionalmente, na maioria dos casos, trafegam, nas redes de sensores, dados sigilosos
1
Os termos sensores, nó sensores e motes são utilizados como sinônimos neste trabalho.
51
52
Workshop de Trabalhos de Iniciação Científica e de Graduação (WTICG)
ou estratégicos e uma interceptação e, possivelmente, uma modificação indevida desses
dados podem causar prejuízos enormes a quem as utiliza.
Para garantir que o serviço de confidencialidade não seja afetado, é necessário,
como mecanismo de segurança, o uso de criptografia na comunicação entre os nós de
uma RSSF (Rede de Sensores Sem Fio). Foi desenvolvida, recentemente, e como parte
da solução para que os dados pudessem trafegar de forma segura em redes de sensores,
uma biblioteca para criptografia de curva elíptica, denominada TinyECC [LIU e NING
2008]. A Criptografia de Curva Elíptica (ECC, na sigla em inglês) é, assim como o
algoritmo RSA, assimétrica. Parece oferecer mesmo nível de segurança que o RSA, mas
com um tamanho de chave muito menor, o que reduz a necessidade de processamento
[STALLINGS 2008], fator crucial para a aplicação nas redes de sensores.
Dadas as restrições das plataformas em RSSF, torna-se necessário abordar três
aspectos a respeito do TinyECC: (i) esta é, realmente, a melhor solução apresentada para
criptografar dados em redes de sensores; (ii) existem recursos suficientes para executar
as funções de criptografia e decriptografia de cada mensagem trocada entre sensores; e
(iii) esta solução é viável, ou seja, sua aplicação pode dividir recursos de um sensor com
outros programas. Para responder a essas questões, neste trabalho, utilizamos a
aplicação de troca de mensagens Hermes, desenvolvida para sensores, e que utiliza a
biblioteca TinyECC para cifrar e decifrar as mensagens. Em seguida, são realizadas
medidas experimentais de consumo de memória ROM e RAM, de energia e tempos de
execução, o que permite a análise da viabilidade de utilização desta biblioteca em redes
de sensores sem fio que necessitam de segurança no tráfego de mensagens entre
sensores.
A principal contribuição deste trabalho é analisar a viabilidade e o nível de
segurança da biblioteca TinyECC quando aplicada em uma aplicação real de troca
segura de mensagens entre sensores sem fio.
Na seção 2, é apresentada uma breve revisão bibliográfica sobre redes de
sensores sem fio e sobre a segurança nessas redes. A seção 3 trata da metodologia
aplicada neste trabalho. A seção 4 apresenta o programa Hermes, enquanto a seção 5
aborda os resultados experimentais e a discussão dos testes feitos nos sensores.
Finalmente, as considerações finais são realizadas na Seção 6.
2. Redes de Sensores Sem Fio
Um sensor consiste em um microprocessador, uma unidade de armazenamento de
dados, sensores para captação de fenômenos físicos, conversores de informações
analógicas para digitais (ADCs), um transceptor de dados, controladores e uma fonte de
energia, que pode ser uma pilha comum, por exemplo. Todos esses componentes,
juntos, fazem com que os dados sejam capturados e processados para utilização em
diferentes aplicações. No entanto, utilizar somente um sensor para aplicar em uma
determinada área não é suficiente para atingir objetivos de estudo.
Um dispositivo sensor, sozinho, possui limite de processamento, capacidade
limitada de armazenamento e pequena largura de banda para comunicação; além disso,
as aplicações atuais envolvem estudos complexos e, para isso, são necessários que esses
sensores sejam conectados em rede para que possam trocar informações entre si e
X Simpósio Brasileiro em Segurança da Informação e de Sistemas Computacionais
53
disponibilizá-las de maneira centralizada. Dessa maneira, faz-se necessária a criação de
uma rede de sensores (Sensors Network), onde cada dispositivo é um nó dessa rede e é
responsável por captar uma informação específica.
Uma rede de sensores funciona, basicamente, da seguinte maneira:
primeiramente, os nós, através de seus sensores, captam dados do mundo real de
maneira analógica. Cada nó possui um componente de sensor de acordo com sua
aplicação. Se um nó deve coletar raios solares, por exemplo, então ele possui um sensor
capaz de captar luz solar incidente. Assim que capta as informações físicas, o nó
converte esses sinais analógicos em informações digitais, através de seu componente
ADC (Analogic-to-Digital Converter). Essas informações, então, são processadas
conforme a aplicação e enviadas para a rede, que pode ser tanto cabeada quanto sem fio.
Para que isso seja feito, é necessário que esses dados sejam empacotados e sigam um
protocolo de comunicação entre os nós.
Nas Redes de Sensores Sem Fio, o empacotamento ocorre e os pacotes são
enviados via ondas de rádio para um nó específico ou para todos os nós que estão
escutando um canal determinado de comunicação e estão no alcance do sinal. No
momento em que um nó recebe um pacote, ele verifica se é o destinatário e, então,
desempacota os dados e os utiliza conforme está programado.
Existem, atualmente, centenas de diferentes aplicações que utilizam redes de
sensores sem fio para captação de informações físicas. Entre elas, está a aplicação na
monitoração de animais selvagens, monitoração de fenômenos climáticos,
monitoramento de pacientes em hospitais, controle de presença em espaços físicos de
acesso restrito, entre outros. Em geral, CULLER et al. (2004) consideraram que as
aplicações podem ser diferenciadas em monitoramento de espaço, monitoramento de
coisas e monitoramento de interações de coisas entre si e o com o espaço.
TinyOS [HILL et al. 2000] é um dos sistemas operacionais mais conhecidos e
utilizados em RSSF. Este sistema operacional utiliza a linguagem nesC [GAY et al.
2003]. Programas desenvolvidos na linguagem nesC consistem em um ou mais
componentes conectados entre si, para formar uma aplicação executável. Nos sensores,
esses componentes representam os componentes físicos do mote e sua execução é
gerenciada pelo sistema operacional TinyOS. Um componente define dois escopos: a
interface e a implementação. A interface define exatamente quais os comandos tal
componente deve ser capaz de executar e a quais eventos ele deve responder, ou seja,
contém toda a sua especificação. Na implementação, é feita a declaração de todas as
ações que o componente deve executar, tendo como base uma interface que o
componente pode utilizar ou prover. Quando se utiliza uma interface, então o
componente apenas deve tratar eventos pré-definidos por ela, enquanto que, quando a
interface é provida, o componente deve implementar seus comandos.
As aplicações de redes de sensores sem fio são variadas e atingem importantes
setores acadêmicos, industriais e de governos. E, em todas essas áreas, existem
informações que são consideradas sigilosas e devem receber tratamento especial. É
crucial, portanto, que as informações trafeguem de maneira segura e que sua
confidencialidade e integridade sejam mantidas. Existem, ainda, outros serviços de
segurança que devem ser garantidos nessa comunicação, como autenticidade de nós e
54
Workshop de Trabalhos de Iniciação Científica e de Graduação (WTICG)
disponibilidade. Para isso, devem-se implementar mecanismos de segurança em cada nó
sensor de uma RSSF que garantam que os dados sejam cifrados e autenticados.
Foram propostas algumas arquiteturas de segurança para garantir os serviços de
segurança em RSSF, tais como: SPINS, TinySec e MiniSec. Os dois últimos tentam
prover serviço de confidencialidade na camada de enlace. Sendo assim, é necessário que
mecanismos de segurança sejam executados a cada salto do pacote na rede RSSF,
aumentando o overhead da comunicação. Além disso, pelas características das soluções
propostas, nós não autênticos conseguiriam se disfarçar na rede e gerar mensagens
autênticas. Considera-se, portanto, que os mecanismos de segurança só serão realmente
eficientes quando implementados na camada de aplicação [MARGI et al. 2009].
Considerando os limites físicos dos dispositivos sensores, deve-se tomar cuidado
ao selecionar um algoritmo de criptografia para garantir a confidencialidade do tráfego
de informações na rede sem fio. O uso excessivo de memória e armazenamento por um
algoritmo pode se tornar um gargalo nas aplicações de redes de sensores. A questão
ligada a RSSF é se um algoritmo de criptografia simétrica será eficientemente executado
nos nós sensores. Adotar cifras que operam sobre blocos muito grandes, por exemplo,
pode levar a um desperdício de energia decorrente da grande quantidade de
processamento, já que os sensores trabalham com blocos de mensagens pequenos.
Ainda considerando as cifras simétricas, para a distribuição da chave secreta, é
necessário utilizar complexos protocolos de distribuição de chaves, o que eleva os
custos computacionais do dispositivo, impossibilitando sua aplicação nas RSSFs. O
padrão atual utilizado em redes com criptografia simétrica é a pré-distribuição, o que
implica que as chaves não mudam. Nesse esquema, as chaves criptográficas utilizadas
pelos sensores são carregadas na memória antes que a rede seja montada, evitando,
assim, o uso de complexos protocolos de distribuição de chaves.
Dessa maneira, uma alternativa melhor é a utilização de algoritmos de
criptografia assimétrica para o gerenciamento de chaves entre pares de sensores, pois a
distribuição é feita de forma dinâmica, independe da topologia da rede e a quantidade de
informação armazenada nos sensores é menor, uma vez que somente uma chave privada
e uma pública são mantidas em cada nó da rede [MARGI et al. 2009]. Neste contexto, a
biblioteca TinyECC se apresenta como uma solução a ser empregada.
3. Metodologia
Para analisar a viabilidade de utilização da biblioteca TinyECC, foi desenvolvido o
Hermes, um programa simples para troca de mensagens criptografadas entre sensores de
uma RSSF. A linguagem utilizada foi nesC, extensão da linguagem C, e o sistema
operacional utilizado foi o TinyOS 1.x, que é a versão para a qual o TinyECC foi
desenvolvido.
Com o programa em funcionamento, foram feitas simulações de trocas de
mensagens utilizando dois sensores TELOS B Mote 8 MHz (TPR2400), com 48KBytes
de memória ROM e 10Kbytes de RAM, para se certificar de que todas as funções
estavam sendo executadas corretamente e obedeciam à especificação.
Para a análise de viabilidade da utilização da biblioteca TinyECC, quatro
métricas foram consideradas: consumo de memória ROM, consumo de memória RAM,
X Simpósio Brasileiro em Segurança da Informação e de Sistemas Computacionais
55
tempo de execução e consumo de energia das funções criptográficas. Essas variáveis
levam em consideração a principal restrição de um dispositivo sensor que é a utilização
de seus recursos limitados. Avaliando-se a quantidade de memória exigida pela
biblioteca e o tempo de execução de suas funções, pode-se chegar a um resultado
satisfatório para a análise da viabilidade, quando se testa a biblioteca em uma aplicação
real.
As três curvas elípticas utilizadas nos testes de consumo de ROM e RAM,
recomendadas pela SECG (Stands for Efficient Cryptography Group), são secp160k1,
secp160r1 e secp160r2. Para coletar esses dados, foi utilizado um script em Perl,
chamado check_size.pl, disponível no diretório do TinyOS, que mostra o consumo
dessas duas memórias pelo programa compilado. Cada compilação do Hermes ativava
um método de otimização da biblioteca TinyECC e desativava todos os demais. Dessa
maneira, todos os métodos eram testados individualmente com todas as três curvas
elípticas. Esses métodos otimizam cálculos em grandes números inteiros e na curva
elíptica. Devido à limitação de espaço, maiores detalhes em [LIU e NING 2008].
Para obter tempos de execução e consumo de energia, foram utilizados um
multímetro digital Agilent 34401A e uma versão do Hermes para Testes (Hermes v.
Teste). Nesta versão, os mesmos componentes da versão original são utilizados, porém
o programa não espera o recebimento de uma mensagem para decifrá-la. Ou seja, na
execução desta versão de teste, o sensor gera, cifra e envia um pacote via rádio. Na
sequência, decifra o pacote gerado por ele mesmo, agindo como o emissor e o receptor
da comunicação. Existe, portanto, uma simulação real de troca de pacotes entre sensores
sem fio, porém sem o atraso introduzido pela comunicação.
Durante os testes, o Hermes v. Teste era reinstalado em um nó sensor a cada
compilação, que considerava somente a curva secp160r1, um método de otimização
ativado por vez, todos juntos ou sem nenhum método ativado. A cada compilação, o
sensor era conectado ao multímetro e o programa Labview lia as amostras que o
multímetro envia pela porta USB durante a execução do Hermes v. Teste, conforme
metodologia utilizada em [MARGI et al. 2010]. Assim, é possível obter o tempo de
execução e o consumo de energia de cada tarefa.
4. O programa Hermes
O programa Hermes foi criado para que a biblioteca de criptografia assimétrica
TinyECC pudesse ser utilizada e testada. Seu objetivo é fazer com que dois ou mais
sensores sem fio em uma RSSF troquem mensagens de 41 bytes criptografadas entre si,
uma vez que o meio em que os pacotes trafegam não é seguro. Consequentemente, para
que isso seja possível, o programa deve fazer com que os sensores gerem chaves
privadas e públicas e troquem estas chaves um com o outro, antes de enviar uma
mensagem criptografada. Por fim, o Hermes, por rodar em um sensor que pode tanto
enviar quanto receber pacotes, deve poder decriptografar as mensagens recebidas. A
biblioteca TinyECC possui um componente, denominado ECIESM, que implementa as
funções de criptografia e decriptografia de mensagens; para gerar chaves privadas e
públicas, é utilizado o componente ECCM. Outras interfaces da biblioteca, com a NNM,
são auxiliares para que as duas interfaces principais possam funcionar corretamente.
56
Workshop de Trabalhos de Iniciação Científica e de Graduação (WTICG)
O Hermes possui seis principais funções: inicializarComponentes()
executa as funções init dos módulos ECC e ECIES; criarMensagem() cria textos
claros aleatórios; gerarChavePrivada()define um vetor contendo uma chave
privada e executa a função gen_private_key, do componente ECCM, para que a chave
seja criada; gerarChavePublica()gera uma chave pública a partir da chave
privada gerada pela função anterior, utilizando a função gen_public_key do componente
ECCM; criptografar()criptografa uma mensagem gerada aleatoriamente,
utilizando a chave pública do nó comunicante e executando a função encrypt, do
componente ECIESM; por fim, decriptografar()decriptografa uma mensagem
recebida via rádio de outro nó, utilizando a chave privada do nó receptor e executando a
função decrypt do componente ECIESM.
A Figura 1 descreve a sequência de estados do sensor ao rodar o programa
Hermes. No Estado inicial, um temporizador é iniciado. Ao receber o evento
Timer1.fired(), que significa que o temporizador atingiu o tempo determinado, o
programa executa as funções de inicialização. Depois disso, passa para o segundo
estado, que faz com que o sensor espere receber uma chave pública de um outro sensor
para continuar com a execução. Quando recebe, dispara um segundo temporizador,
Timer2.start(), que repete, constantemente, o envio de mensagens cifradas para a
rede. O sensor, no terceiro e último estado, pode também receber um pacote da rede
contendo uma mensagem cifrada a ele, e, nesse caso, a mensagem deve passar pela
decriptografia.
Figura 1. Diagrama de Estados do sensor executando o programa Hermes.
Primeiramente, a execução do Hermes inicia-se executando a função
inicializarComponentes(). Feito isso com sucesso, passa para a próxima
função, que é gerarChavePrivada(). Na sequência, se feito com sucesso, o
programa executa a função gerarChavePública(), pois depende da chave privada
gerada anteriormente. Se gerado e enviado corretamente para o componente de rádio
para distribuição, então o sensor aguarda o recebimento de uma chave pública para, aí
sim, pode gerar mensagens aleatórias, com a função criarMensagem() e
criptografá-las através da função criptografar(). Se nesse momento o sensor
receber um pacote da rede, então ele executa a função decriptografar().
X Simpósio Brasileiro em Segurança da Informação e de Sistemas Computacionais
57
5. Análise de Desempenho
A primeira medida executada foi o consumo de memória ROM e RAM. Foi coletada a
utilização dos recursos de ROM e RAM do sensor para cada uma das 3 curvas elípticas
selecionadas e cada método de otimização. A Tabela 1 mostra os resultados, que estão
em kbytes.
Tabela 1. Consumo de memórias ROM e RAM para cada uma das curvas
elípticas selecionadas e cada um dos métodos de otimização do TinyECC.
Curva: secp160k1
Curva: secp160r1
Curva: secp160r2
Métodos de otimização
Consumo de ROM Consumo de RAM Consumo de ROM Consumo de RAM Consumo de ROM Consumo de RAM
Barrett Reduction
23.546
1.826
23.542
1.826
23.544
1.826
Hybrid Multiplication
22.156
1.776
22.152
1.776
22.154
1.776
Hybrid Square
22.252
1.776
22.248
1.776
22.250
1.776
Curve-Specific Optmization
22.544
1.776
22.610
1.776
22.542
1.776
Projective Coordinate
23.304
1.776
23.300
1.776
23.302
1.776
Sliding Window
22.372
3.104
22.368
3.104
22.370
3.104
Com todos
27.688
3.484
27.868
3.484
27.686
3.484
Sem nenhum
22.112
1.776
22.108
1.776
22.110
1.776
Dentre as três curvas recomendadas pela SECG, a que menos consome a
memória ROM quando todos os métodos de otimização são utilizados é a secp160r2,
representando um consumo de 57,6% do total de ROM disponível no sensor. O método
de otimização da biblioteca TinyECC que mais aumenta o consumo dessa memória é o
Barrett Reduction, preenchendo cerca de 49% do total de ROM. O método que
consumiu mais da memória RAM, por sua vez, quando todos os outros foram
desativados, foi o Sliding Window, consumindo 31% do total de RAM disponível.
O segundo passo da análise foi identificar o tempo de execução e consumo de
energia de cada uma das funções utilizadas da biblioteca TinyECC utilizando a curva
secp160r1 e cada um dos métodos de otimização.
Tanto o tempo de execução quanto o consumo de energia das funções de
inicialização e geração de chave privada mostraram-se constantes e muito pequenos,
quando comparados com os tempos das demais funções. A média de todos os tempos
observados para a função inicializarComponentes() foi de 1,926 segundos e,
para a função gerarChavePrivada(), foi de 0,018 segundos. Foi observado um
tempo de 7,891 segundos para a função de inicialização quando todos os métodos de
otimização da biblioteca TinyECC estão ativados. Não houve grandes variações para a
função responsável por gerar a chave privada.
Tabela 2. Tempo de Execução médio para 4 execuções com 95% de intervalo de
confiança, em segundos, para as funções gerarChavePublica(), criptografar() e
decriptografar().
gerarChavePublica()
criptografar()
decriptografar()
Métodos de otimização
Tempo de Execução Tempo de Execução Tempo de Execução
Barrett Reduction
42,18 ± 0,06
86,38 ± 0,13
43,45 ± 0,07
Hybrid Multiplication
41,07 ± 0,08
84,11 ± 0,15
41,87 ± 0,07
Hybrid Square
40,91 ± 0,04
65,80 ± 35,36
37,75 ± 6,05
Curve-Specific Optmization
40,41 ± 0,04
82,77 ± 0,05
41,29 ± 0,02
Projective Coordinate
7,95 ± 0,01
16,33 ± 0,01
8,78 ± 0,02
Sliding Window
34,09 ± 0,05
70,38 ± 1,08
37,49 ± 0,03
Com todos
2,93 ± 0,0
6,45 ± 0,0
4,21 ± 0,01
Sem nenhum
41,22 ± 0,05
84,43 ± 0,10
42,13 ± 0,06
58
Workshop de Trabalhos de Iniciação Científica e de Graduação (WTICG)
Para
as
funções
gerarChavePulica(),
criptografar()
e
decriptografar(), foram observadas duas quedas no tempo de execução quando
se utiliza somente o método Projective Coordinate e quando se utilizam todos os
métodos de otimização. A Tabela 2 apresenta os resultados de tempo de execução das
três funções.
Com relação ao consumo de energia, pôde-se verificar uma constante para as funções
inicializarComponentes() e gerarChavePrivada(), havendo apenas um
pico de 40 milijoules quando se utiliza todos os métodos de otimização. A Tabela 3
apresenta o consumo de energia, em milijoules, para as outras três funções do Hermes.
Tabela 3. Consumo de energia médio para 4 execuções com 95% de intervalo
de confiança, em milijoules (mJ), para as funções gerarChavePublica(),
criptografar() e decriptografar().
gerarChavePublica()
criptografar()
decriptografar()
Métodos de otimização
Consumo de Energia Consumo de Energia Consumo de Energia
Barrett Reduction
215 ± 2
439 ± 2
221 ± 1
Hybrid Multiplication
205 ± 3
422 ± 7
210 ± 4
Hybrid Square
206 ± 3
333 ± 180
196 ± 33
Curve-Specific Optmization
207 ± 2
427 ± 5
213 ± 3
Projective Coordinate
41 ± 1
84 ± 2
45 ± 0
Sliding Window
174 ± 3
361 ± 6
192 ± 3
Com todos
15 ± 0
33 ± 0
22 ± 0
Sem nenhum
205 ± 2
418 ± 6
209 ± 3
Com relação ao tempo de execução e consumo de energia, observou-se que a
função que mais consome tempo e energia foi a criptografar(), com média de
62,08 segundos e 315 milijoules nos testes executados. As funções
gerarChavePublica() e decriptografar() possuem médias de tempo de
execução muito próximas, ao redor de 32 segundos. Finalmente, as funções que menos
consomem tempo e energia são inicializarComponentes()
e
gerarChavePrivada(). A função de inicialização de componentes só consumiu
mais tempo e energia quando todos os métodos de otimização da biblioteca foram
ativados, podendo-se afirmar que, para que a execução das demais funções se torne mais
rápida, é necessário que se carregue os componentes necessários na memória, o que
demanda tempo extra de processamento dessa função.
Com relação aos métodos de otimização, o que mais reduz o tempo de execução
das funções é o Projective Coordinate, cujo principal objetivo é acelerar adição em
pontos e multiplicação em pontos escalares [LIU e NING, 2008]. O ganho maior em
relação ao tempo de execução e consumo de energia, entretanto, é quando se combinam
todos os métodos de otimização, fazendo com que, por exemplo, a função de
criptografia possa ser executada em pouco mais de 6 segundos e consuma cerca de 33
milijoules, decrescendo o tempo e consumo de energia até 90% para essa função,
segundo os dados coletados.
MARGI et al. (2010) demonstra tempo de execução de três algoritmos de
criptografia simétrica, Curupira-2, AES e SkipJack, em sensores TelosB com TinyOS
2.0.2. Os tamanhos dos blocos cifrados variaram de acordo com o algoritmo. Para o
Curupira-2, foi utilizado um bloco de 12 bytes; para o AES, um de 16 bytes; e para o
SkipJack, um bloco de 8 bytes. A Tabela 4 mostra os resultados [MARGI et al. 2010].
X Simpósio Brasileiro em Segurança da Informação e de Sistemas Computacionais
59
Observamos que algoritmos simétricos gastam muito menos tempo para executar
as operações de cifragem e decifragem quando comparados aos testes feitos neste
trabalho com o algoritmo de criptografia assimétrica ECC. Com o tempo de execução da
função de criptografia do AES, o mais demorado dos três algoritmos analisados,
verifica-se uma taxa de 39,9 bytes/s. Fazendo a mesma relação com a função de
criptografia do TinyECC, quando todos os métodos de otimização estão ativados, temse a taxa de 6,35 bytes/s O desempenho da criptografia simétrica em sensores, portanto,
mostrou-se melhor do que o da assimétrica, sob as mesmas condições.
Tabela 4. Tempos de Execução de algoritmos simétricos em sensores TelosB,
retirados de MARGI et al. (2010)
Curupira-2
AES
SkipJack
Função Tempo (ms) Tempo (ms) Tempo (ms)
init
67
109
5
crypt
175
401
175
decrypt
192
476
196
6. Considerações Finais
A comparação dos resultados obtidos neste trabalho com os resultados da análise de
algoritmos de criptografia simétrica demonstra que o desempenho de funções de
criptografia em algoritmos simétricos é muito superior ao de algoritmos assimétricos,
como o ECC. Entretanto, conforme discutido na revisão bibliográfica deste trabalho, a
criptografia assimétrica resolve um problema relevante da criptografia simétrica que é o
problema da distribuição de chaves de sessão. Deste modo, ao utilizar a biblioteca
TinyECC para cifrar e decifrar chaves secretas de algoritmos simétricos, permitindo a
distribuição de chaves de modo seguro e, para proteger mensagens, utilizar-se de
algoritmos simétricos, então chega-se em uma solução ideal de criptografia para as
Redes de Sensores Sem Fio.
Em relação à existência de recursos necessarios em um sensor, conforme os
testes realizados mostraram, se se configurar a biblioteca para ser utilizada com todos os
métodos de otimização ativados, então se tem um alto consumo de memórias ROM e
RAM. Entretanto, consegue-se eficiência máxima na execução das funções de
criptografia. Desse modo, deve-se analisar cada aplicação de RSSFs, verificar quais os
requisitos de segurança e desempenho, para que a biblioteca seja configurada a fim de
ser eficiente, tanto em execução quanto no consumo de memória. Mesmo utilizando
todos os métodos, no entanto, o sensor ainda possuiu recursos para execução de outras
tarefas.
A biblioteca TinyECC atingiu o seu maior objetivo, que é prover um pacote
aberto e pronto-para-usar com operações de ECC que fossem flexíveis e facilmente
integradas em programas para redes de sensores sem fio. É muito simples ativar e
desativar métodos de otimização e escolher com qual curva elíptica deseja trabalhar. O
TinyECC é, portanto, viável para aplicação em RSSFs, principalmente, quando se
utiliza o máximo de seus recursos de otimização e quando se combina seu uso com o
uso de algoritmos de criptografia simétrica para cifragem e decifragem de mensagens.
A grande dificuldade em relação à biblioteca TinyECC está em sua versão. Os
autores da TinyECC a desenvolveram quando a versão 1.x do sistema operacional
60
Workshop de Trabalhos de Iniciação Científica e de Graduação (WTICG)
TinyOS estava disponível. Essa versão, no entanto, é muito confusa e não provê muitos
recursos para o desenvolvimento de programas para sensores. Apesar da versão atual do
TinyOS ser a 2.1.1, os autores da TinyECC não publicaram uma nova versão da
biblioteca para a nova versão do sistema operacional.
Trabalhos futuros incluem o desenvolvimento da biblioteca TinyECC para a
versão 2 ou superior do TinyOS. Como uma alternativa, pode-se escrever as funções da
biblioteca em C e disponibilizar como um pacote que pode ser utilizado por qualquer
versão do TinyOS. Posteriormente, seria interessante o desenvolvimento de um
programa que combinasse a utilização da biblioteca TinyECC para a distribuição de
chaves de sessão e um algoritmo de criptografia simétrica, como o Curupira-2. Então,
poder-se-ia mensurar os consumos de memória ROM e RAM, os tempos de execução
das funções e, adicionalmente, e também importante, o consumo de energia do sensor na
execução deste programa, para analisar a viabilidade e nível de segurança dessa solução
em aplicações reais de Redes de Sensores Sem Fio.
7. Referências
Culler, D., Estrin, D. e Srivastava, M. (2004) ―Overview of Sensor Networks‖ IEEE
Computer Magazine v. 37, n.1, p. 41-49.
D. Gay, P. Levis, R. von Behren, M. Welsh, E. Brewer, and D. Culler, ―The nesC
language: A holistic approach to networked embedded systems,‖ in PLDI’03. New
York, NY, USA: ACM, 2003, pp. 1–11.
J. Hill, R. Szewczyk, A. Woo, S. Hollar, D. Culler, and K. Pister, ―System architecture
directions for networked sensors,‖ in Architectural Support for Programming
Languages and Operating Systems, 2000, pp. 93–104.
Liu, A. e Ning, P. (2007) "TinyECC: Elliptic Curve Cryptography for Sensor Networks
(Version 1.0)", http://discovery.csc.ncsu.edu/software/TinyECC/, November.
Liu, A. e Ning, P. (2008) "TinyECC: A Configurable Library for Elliptic Curve
Cryptography in Wireless Sensor Networks" In: Proceedings of the 7th International
Conference on Information Processing in Sensor Networks (IPSN 2008), SPOTS
Track, pages 245—256.
Margi, C., Simplicio, M., Barreto, P. e Carvalho, T. (2009) ―Segurança em Redes de
Sensores sem Fio‖, In: Altair Santin; Raul Ceretta Nunes; Ricardo Dahab. (Org.).
Minicursos: SBSEG 2009 / IX Simpósio Brasileiro de Segurança da Informação e de
Sistemas Computacionais. 1 ed. Porto Alegre, RS: Sociedade Brasileira de
Computação, v. , p. 149-194.
Margi, C., Oliveira, B., Sousa, G., Simplicio, M., Barreto, P., Carvalho, T., Naslund,
M., Gold, R. (2010) ―Impact of Operating Systems on Wireless Sensor Networks
(Security) Applications and Testbeds‖, aceito em IEEE ICCCN WiMAN 2010,
Zurique, Suíça.
Stallings, W. (2008) ―Criptografia e segurança de redes: Princípios e Práticas‖ 4a ed.
São Paulo: Pearson Prentice Hall, 512 p.
Download