1. O documento apresenta os resultados de um estudo sobre o consumo de energia de algoritmos criptográficos do benchmark MiBench usando quatro metodologias diferentes.
2. Foram analisados os algoritmos SHA, Blowfish e Rijndael (AES) usando medição de descarga de bateria, estimativa com características do processador, simulação no Sim-Panalyzer e medição experimental com osciloscópio.
3. Os principais resultados foram a caracterização do consumo energético dos algoritmos de acordo com o tamanho da chave c
Oportunidades para inovaçao e empreendedorismo em computacao
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
1. UNIVERSIDADE FEDERAL DE SERGIPE – UFS
LEALDO SANTOS NETO
ESTUDO E MEDIÇÃO DO CONSUMO DE ENERGIA DE ALGORITMOS
CRIPTOGRÁFICOS DO MIBENCH
São Cristóvão, SE
Julho de 2010
2. LEALDO SANTOS NETO
ESTUDO E MEDIÇÃO DO CONSUMO DE ENERGIA DE ALGORITMOS
CRIPTOGRÁFICOS DO MIBENCH
Monografia submetida ao corpo docente do Curso de
Ciência da Computação da Universidade Federal de
Sergipe (UFS) como parte dos requisitos para obtenção
do grau de Bacharel em Ciência da Computação.
Orientador: Edward David Moreno, Dr.
São Cristóvão, SE
Julho de 2010
3. Santos Neto, Lealdo
Estudo e Medição do Consumo de Energia de Algoritmos Criptográficos
do MiBench. Monografia de Trabalho de Conclusão de Curso, UFS. São
Cristóvão, 2010.
1. Consumo de Energia 2. MiBench 3. Sistemas Embarcados 4.
Sim-Panalyzer 5. Computação Móvel 6. Medição Experimental.
4. LEALDO SANTOS NETO
ESTUDO E MEDIÇÃO DO CONSUMO DE ENERGIA DE ALGORITMOS
CRIPTOGRÁFICOS DO MIBENCH
Monografia submetida ao corpo docente do Curso de Ciência da Computação da
Universidade Federal de Sergipe (UFS) como parte dos requisitos para obtenção do grau de
Bacharel em Ciência da Computação.
São Cristóvão, 20 de Julho de 2010.
BANCA EXAMINADORA:
_____________________________________________
Prof. Edward David Moreno, Dr.
Orientador
DCOMP / UFS
_____________________________________________
Msc. Wanderson Roger Azevedo Dias
Pesquisador do DCC/UFAM
_____________________________________________
Prof. Dr. Marco Túlio Chella
DCOMP / UFS
_____________________________________________
Prof. Msc. César Giacomini Penteado
LSITEC, USP, São Paulo
5. AGRADECIMENTOS
A Deus, que como força superior proporciona a harmonia do mundo em que vivemos.
Aos meus pais, pela minha formação de vida e oportunidade de educação qualificada.
Ao meu orientador, Edward Moreno, pelos ensinamentos na área, apoio e atenção
dispensada neste último período.
Ao Prof. Chella e ao Wanderson Roger pelo apoio e respostas a questionamentos sobre
assuntos relacionados a este trabalho.
Aos colegas de graduação, pelos momentos de diversão e estudos passados juntos.
Aos meus familiares pelo apoio durante toda a minha vida que resultaram na formação
da pessoa que sou hoje.
A todos, o meu muito obrigado.
6. RESUMO
O grande avanço tecnológico decorrente das últimas décadas resultou em um mundo
globalizado em que a velocidade dos acontecimentos está maior e os meios de comunicação
estão mais rápidos e difundidos. Neste novo cenário as informações passaram a ser
supervalorizadas e a computação tem grande destaque como meio de criação e transmissão
deste conteúdo, além do fato da miniaturização dos dispositivos que tornou a computação
ubíqua.
Diante deste cenário, observando ainda a grande importância dos sistemas
embarcados, torna-se necessário um estudo sobre o consumo energético dos mesmos, sendo
neste trabalho focado o conjunto de benchmark MiBench, em especial os seus algoritmos de
segurança.
Assim, o presente trabalho tem como objetivo analisar e mensurar o consumo de
energia dos algoritmos SHA, rijndael (melhor conhecido como AES) e Blowfish, presentes no
MiBench, usando quatro metodologias. Esses métodos são: medição de descarga da bateria,
estimativa com tempo de execução e características de processador, simulação usando o Sim-
Panalyzer e medição experimental com uso de osciloscópio. Os principais resultados do
trabalho foram a caracterização do consumo dos algoritmos estudados e um comparativo entre
os resultados das metodologias empregadas, inclusive com a obtenção de dados reais sobre o
consumo dos algoritmos.
Palavras-chave:
Consumo de Energia, MiBench, Sistemas Embarcados, Sim-Panalyzer, Computação
Móvel, Medição Experimental.
7. ABSTRACT
The great technological progress in the last decades results in a globalized world
where things happens faster and the media are faster and difused. In this new environment the
information came to be overvalued and the computation has a great importance as a mean of
creation and transmission of this content, beyond the fact of the miniaturization of devices
became them ubiques.
In this setting, noting the importance of embedded systems, becomes necessary to
study them energy consumption, and this study focused on the set of benchmark MiBench,
specially their security algorithms.
Thus, this study aims to analyze and measure the power consumption of the SHA,
rijndael (better known as AES) and Blowfish algorithms, present on MiBench, using four
methods. These methods are: the battery discharge measurement, estimation using runtime
and characteristics of processor, simulation using Sim-Panalyzer and experimental
measurement using an oscilloscope. The main results of this study were to characterize the
consumption of the studied algorithms and obtain a comparison between the results of the
different methodologies, including obtaining the real power consumption of the algorithms.
Key-words:
Energy Consumption, MiBench, Embedded System, Sim-Panalyzer, Mobile
Computing, Experimental Measurement.
8. SUMÁRIO
LISTA DE TABELAS .................................................................................................................................... 9
1. INTRODUÇÃO ...............................................................................................................................10
1.1. MOTIVAÇÃO .................................................................................................................................11
1.2. OBJETIVOS ...................................................................................................................................11
1.3. ORGANIZAÇÃO DA MONOGRAFIA .................................................................................................12
2. CONTEXTUALIZAÇÃO TEÓRICA .............................................................................................13
2.1. SISTEMAS EMBARCADOS ..............................................................................................................13
2.2. CONCEITOS DE SEGURANÇA DE DADOS ........................................................................................15
2.2.1. Algoritmos de Chaves Assimétricas ..........................................................................................16
2.2.2. Algoritmos de Chaves Simétricas .............................................................................................16
2.2.3. Algoritmos de Hash .................................................................................................................17
2.3. PROGRAMAS DO BENCHMARK MIBENCH ......................................................................................17
2.4. FERRAMENTAS UTILIZADAS PARA ANALISAR O CONSUMO DE ENERGIA ......................................21
2.4.1. NePSim ....................................................................................................................................22
2.4.2. PowerScope .............................................................................................................................22
2.4.3. JouleTrack ...............................................................................................................................24
2.4.4. SNU Energy Explorer Web ......................................................................................................25
2.4.5. Sim-Panalyzer ..........................................................................................................................26
2.5. TÉCNICAS PARA MEDIÇÃO UTILIZADAS NO TRABALHO ...............................................................27
2.5.1. Metodologia 1: Medição de Descarga de Baterias ....................................................................28
2.5.2. Metodologia 2: Estimativa com Tempo de Execução e Características do Processador ............30
2.5.3. Metodologia 3: Simulação usando o Sim-Panalyzer ................................................................31
2.5.4. Metodologia 4: Experimental com Osciloscópio.......................................................................31
3. TESTES, RESULTADOS E ANÁLISE...........................................................................................33
3.1. RESULTADOS PARA MEDIÇÃO DE DESCARGA DE BATERIAS EM NOTEBOOK .................................33
3.1.1 Algoritmo SHA-1 .....................................................................................................................34
3.1.2 Algoritmo Blowfish ..................................................................................................................34
3.2. RESULTADOS PARA ESTIMATIVA DE CONSUMO COM BASE NAS CARACTERÍSTICAS DO PROCESSADOR .36
3.2.1. Algoritmo SHA-1 .....................................................................................................................36
3.2.2. Algoritmo Blowfish ..................................................................................................................37
3.3. RESULTADOS USANDO O SIMULADOR SIM-PANALYZER............................................................................37
3.3.1. Algoritmo SHA-1 .....................................................................................................................38
3.3.2. Algoritmo Blowfish ..................................................................................................................38
3.3.3. Algoritmo Rijndael...................................................................................................................40
3.4. RESULTADOS PARA EXPERIMENTO USANDO O OSCILOSCÓPIO .....................................................42
3.4.1. Algoritmo SHA-1 .....................................................................................................................43
3.4.2. Algoritmo Blowfish ..................................................................................................................46
3.5. COMPARATIVO ENTRE OS MÉTODOS ............................................................................................56
4. CONCLUSÕES ................................................................................................................................60
REFERÊNCIAS ............................................................................................................................................62
ANEXO I .......................................................................................................................................................64
ANEXO II ......................................................................................................................................................66
ANEXO III ....................................................................................................................................................71
ANEXO IV.....................................................................................................................................................75
9. LISTA DE FIGURAS
Figura 2.1 Etapas de como o PowerScope gera um perfil de energia. (a) Coleta de dados e (b) Análise dos dados
[6]. ..........................................................................................................................................................23
Figura 2.2 Corrente consumida por instruções do processador ARM medidas em [22]. .....................................24
Figura 2.3. Diagrama do JouleTrack ................................................................................................................25
Figura 2.4. Esquema utilizado para as medições com a metodologia 4. .............................................................32
Figura 3.1. Gráfico do custo energético para execução do algoritmo Blowfish. .................................................39
Figura 3.2. Gráfico do custo energético para execução do algoritmo rijndael.....................................................41
Figura 3.3. Resistores ligado em série com o fio de alimentação da placa mãe. .................................................43
Figura 3.4: Gráficos da variação da voltagem ao executar o algoritmo SHA-1 para as entradas: (a) entrada1, (b)
entrada2, (c) Money.mp3 e (d) vídeo.MPG. ..............................................................................................44
Figura 3.5. Gráficos da variação da voltagem ao executar uma encriptação com o algoritmo Blowfish usando
chave de 32 bits para as entradas: (a) entrada1, (b) entrada2, (c) Money.mp3 e (d) vídeo.MPG. .................47
Figura 3.6. Gráficos da variação da voltagem ao executar uma decriptação com o algoritmo Blowfish usando
chave de 32 bits para as entradas: (a) entrada1, (b) entrada2, (c) Money.mp3 e (d) vídeo.MPG. .................47
Figura 3.7. Gráficos da variação da voltagem ao executar uma encriptação com o algoritmo Blowfish usando
chave de 256 bits para as entradas: (a) entrada1, (b) entrada2, (c) Money.mp3 e (d) vídeo.MPG. ...............50
Figura 3.8. Gráficos da variação da voltagem ao executar uma decriptação com o algoritmo Blowfish usando
chave de 256 bits para as entradas: (a) entrada1, (b) entrada2, (c) Money.mp3 e (d) vídeo.MPG. ...............50
Figura 3.9. Gráficos da variação da voltagem ao executar uma encriptação com o algoritmo Blowfish usando
chave de 448 bits para as entradas: (a) entrada1, (b) entrada2, (c) Money.mp3 e (d) vídeo.MPG. ...............53
Figura 3.10. Gráficos da variação da voltagem ao executar uma decriptação com o algoritmo Blowfish usando
chave de 448 bits para as entradas: (a) entrada1, (b) entrada2, (c) Money.mp3 e (d) vídeo.MPG. ...............53
10. LISTA DE TABELAS
Tabela 2.1. Número de instruções executadas pelas aplicações do MiBench [9].................................................19
Tabela 2.2. Áreas de consumo apresentadas no Sim-panalyzer e os seus significados. .......................................27
Tabela 3.1. Arquivos usados como parâmetro para os testes. ............................................................................33
Tabela 3.2. Chaves usadas como parâmetro para os testes.................................................................................33
Tabela 3.3. Resultados da execução do algoritmo SHA usando a primeira metodologia....................................34
Tabela 3.4. Resultados da execução do algoritmo Blowfish (chave de 32 bits) usando a metodologia 1. ............35
Tabela 3.5. Resultados da execução do algoritmo Blowfish (chave de 256 bits) usando a metodologia 1. ..........35
Tabela 3.6. Resultados da execução do algoritmo Blowfish (chave de 448 bits) usando a metodologia 1. ..........36
Tabela 3.7. Resultados da estimativa de consumo para algoritmo SHA. ............................................................37
Tabela 3.8. Resultados da estimativa de consumo para algoritmo Blowfish. ......................................................37
Tabela 3.9. Resultados da simulação de consumo para algoritmo SHA. ............................................................38
Tabela 3.10. Resultados da simulação de consumo para algoritmo Blowfish. ....................................................39
Tabela 3.11. Potência simulada ao executar o algoritmo Blowfish. ...................................................................40
Tabela 3.12. Resultados da simulação de consumo para algoritmo rijndael. ......................................................41
Tabela 3.13. Aumento de consumo energético de acordo com o tamanho da chave. ..........................................41
Tabela 3.14. Potência simulada ao executar o algoritmo rijndael.......................................................................42
Tabela 3.15. Gráficos obtidos ao executar o algoritmo SHA e dados da interpretação dos mesmos. ...................45
Tabela 3.16. Guia para as figuras e tabelas com os resultados dos testes com o algoritmo Blowfish...................46
Tabela 3.17. Gráficos obtidos ao executar o algoritmo Blowfish no processo de encriptação usando chave de 32
bits e dados da interpretação dos mesmos. ................................................................................................48
Tabela 3.18. Gráficos obtidos ao executar o algoritmo Blowfish no processo de decriptação usando chave de 32
bits e dados da interpretação dos mesmos. ................................................................................................49
Tabela 3.19. Gráficos obtidos ao executar o algoritmo Blowfish no processo de encriptação usando chave de 256
bits e dados da interpretação dos mesmos. ................................................................................................51
Tabela 3.20. Gráficos obtidos ao executar o algoritmo Blowfish no processo de decriptação usando chave de 256
bits e dados da interpretação dos mesmos. ................................................................................................52
Tabela 3.21. Gráficos obtidos ao executar o algoritmo Blowfish no processo de encriptação usando chave de 448
bits e dados da interpretação dos mesmos. ................................................................................................54
Tabela 3.22. Gráficos obtidos ao executar o algoritmo Blowfish no processo de decriptação usando chave de 448
bits e dados da interpretação dos mesmos. ................................................................................................55
Tabela 3.23. Comparativo da potência média (em W) consumida em cada metodologia usada no trabalho. .......56
Tabela 3.24. Comparativo do consumo em Joules entre as diferentes metodologias. ..........................................57
Tabela 3.25. Comparativo do consumo (em µJ) dos algoritmos estudados por byte do arquivo de entrada. ........58
Tabela 3.26. Comparativo do tempo de execução (em s) obtidos nas diferentes metodologias aplicadas. ...........59
11. 1. INTRODUÇÃO
Esta é a era onde a informação e o conhecimento passaram a desempenhar um
novo e estratégico papel, passando então a ter um valor inimaginável. Nessa nova era o
principal meio de produção e transmissão de conhecimento passou a ser o computador,
tornando-se assim onipresente no mundo atual.
Um computador pode ser um desktop comumente visto nas empresas e
domicílios atuais, ou qualquer dispositivo com capacidade de processamento usado para
gerar, armazenar ou transmitir dados. Estes outros dispositivos são em sua maioria
sistemas embarcados, que são sistemas digitais de propósitos especiais, usados dentro
de outro dispositivo com funções específicas.
Com a elevada evolução dos processadores e custo reduzido de produção, tais
sistemas embarcados estão presentes em praticamente tudo que utiliza energia elétrica.
Por exemplo, o controlador do LCD de um DVD player, o controle de injeção de
combustível em um carro de Fórmula 1, obtiveram maior potencial de processamento, o
que acarreta em um aumento de consumo energético.
A problemática se inicia devido ao fato de que, segundo URRIZA et al [24], o
avanço da tecnologia das baterias ter sido lento nos últimos anos, já que as tecnologias
usadas nas mesmas se tratarem de tecnologias amadurecidas, e ainda não existem
alternativas comercialmente viáveis de novas tecnologias para os próximos anos. Para
suprir essa deficiência das baterias, estão sendo estudadas formas de diminuir o
consumo energético dos mesmos, por meio de arquiteturas de baixo consumo e de
algoritmos mais eficientes.
O fato é que uma grande quantidade desses dispositivos estão interligados a
outros dispositivos através da internet, sendo usados em grande escala para a
transmissão de dados, que em sua maioria devem ter segurança ao trafegarem na rede.
Essa segurança é dada com a utilização de algoritmos de criptografia, que então
passaram a serem executados na grande maioria dos dispositivos computacionais.
Segundo GUTHAUS et al [9], o MiBench é um conjunto de 35 aplicações de
benchmark otimizadas para sistemas embarcados. Suas aplicações são divididas em seis
categorias: controle automotivo e industrial, rede, segurança, dispositivos de consumo,
automação de escritórios e telecomunicações.
12. Este trabalho visa realizar o estudo comparativo do consumo de energia de cada
um desses algoritmos selecionados usando algumas metodologias para se obter esse
importante valor.
1.1. Motivação
O consumo global de energia preocupa não só os ambientalistas, mas também
toda a sociedade, e dispositivos de computação também estão sendo observados deste
ponto de vista. Esta preocupação, aliada à autonomia das baterias, fez com que os
projetistas passassem a desenvolver produtos buscando um menor consumo energético.
Segundo SANGIOVANNI-VINCENTELLI & MARTIN [18], os atuais sistemas
embarcados têm seu desenvolvimento compostos em 80% por software. Ainda segundo
SANGIOVANNI-VINCENTELLI & MARTIN [18], o uso de mais software permite
reduzir o custo de projeto e produção dos sistemas embarcados, já que os
microcontroladores e microprocessadores embarcados são produzidos em larga escala e
utilizados em diversas aplicações embarcadas diferentes. Sendo a maior parte das
funcionalidades dos sistemas embarcados implementadas por software, o consumo
energético de tais algoritmos é de grande importância para o consumo total do sistema,
e em consequência a sua viabilidade econômica.
Com o aumento do uso desse tipo de algoritmos em diversos dispositivos o
consumo energético proveniente da sua execução pode ser considerado significativo,
principalmente em dispositivos móveis. Por esse motivo, foi escolhido para estudo o
consumo de energia dos algoritmos de segurança presentes no benchmark MiBench,
que são: SHA (Secure Hash Algorithm), Blowfish, rijndael (melhor conhecido como
AES) e PGP (Pretty Good Privacy).
1.2. Objetivos
Geral
Este trabalho tem como objetivo estudar e analisar o consumo de energia em
algumas plataformas computacionais, incluindo ferramentas de simulação e
metodologias para medição. Como o foco do trabalho são os algoritmos de segurança
13. do MiBench, também são incluídos como objetivo o estudo de sistemas embarcados,
dos algoritmos de segurança e do próprio MiBench.
Específicos
a) Realizar testes de consumo de energia dos algoritmos alvo utilizando um
notebook;
b) Realizar medição do consumo de energia dos algoritmos alvo em um desktop;
c) Simular o consumo de energia utilizando o simulador Sim-Panalyzer [2];
d) Comparar o consumo medido usando várias metodologias de avaliação;
e) Destacar a medida experimental, via osciloscópio.
1.3. Organização da Monografia
A monografia está organizada em quatro capítulos. O capítulo 2 apresenta os
conceitos básicos estudados para a realização dos experimentos feitos, além de prover
um embasamento teórico para todo o trabalho, como conceitos relacionados com
sistemas embarcados, segurança de dados, benchmark MiBench e ferramentas e
técnicas para medição de consumo energia.
O capitulo 3 apresenta os resultados obtidos com a aplicação dos métodos
descritos na seção 2.5, e sua respectiva análise e comparação. O capítulo 4 finaliza o
trabalho, sumarizando os resultados alcançados e discutindo futuras pesquisas e
trabalhos.
14. 2. Contextualização Teórica
2.1. Sistemas Embarcados
Sistemas embarcados geralmente são definidos como um sistema de propósito
específico usado dentro de outro dispositivo.
Como tal definição não é precisa, são apresentadas suas principais características
a seguir:
• Funcionamento Embutido: São sistemas que funcionam dentro de outro
dispositivo, e para o mesmo, acrescentando ou otimizando funcionalidades.
• Ubíquo: São invisíveis ao usuário do dispositivo em que o sistema encontra-
se embutido.
• Função Específica: Sistemas embarcados são projetados para desempenhar
uma função específica repetidamente. Isso garante que o dispositivo seja
desenhado da maneira mais eficiente em termos das restrições exigidas para
sua função específica. Apesar de serem específicos, flexibilidade quanto a
atualizações, diferenciações e reuso são importantes.
• Restrição de Custo: Como sistemas embarcados são usados em outros
dispositivos produzidos em larga escala, estes precisam ter um custo baixo
para que seja viável sua utilização.
• Restrição de Tamanho: Sistemas embarcados devem ser suficientemente
pequenos para serem utilizados em sistemas portáteis, em que tamanho e
peso influem muito no produto final.
• Desempenho Satisfatório: Mesmo com restrições de consumo de energia,
custo e tamanho, o dispositivo deve apresentar um desempenho satisfatório
para a função em que foi projetado.
• Restrição do Consumo de Energia: Como estes sistemas são largamente
usados em dispositivos que utilizam baterias como fonte de energia eles
devem ter um consumo energético bastante restrito, sendo este o mínimo
possível para uma execução satisfatória da sua tarefa específica.
• Reativo e de Tempo Real: Os sistemas embarcados geralmente têm que ser
reativos continuamente às alterações de parâmetros de entrada, já que são
comumente usados como controladores que monitoram entradas e a cada
15. alteração devem fazer modificações nas saídas. Como complemento da
reatividade, estas reações devem ser em tempo real, já que muitas vezes estes
controladores operam em situações críticas em que não pode haver atrasos.
Estas tolerâncias quanto aos atrasos podem ser consideradas como hard ou
soft, em que a operação deve ser obrigatoriamente terminada dentro do
deadline ou pode ir além do deadline sem falha grave, respectivamente.
Para o desenvolvimento de um sistema embarcado todas estas características
devem ser estudadas e então analisadas para definir o nível em que cada uma delas deve
estar presentes, além de exigir quais características serão implementadas em hardware
ou software para garantir o equilíbrio do projeto. Tal equilíbrio é decorrente da melhoria
de uma das características comprometendo as outras. Por exemplo, sabe-se que quanto
maior o desempenho de um sistema maior será o seu consumo energético e a dissipação
de calor, portanto se deve escalar quanto de desempenho necessário para que possa
dimensionar o seu consumo energético e a necessidade de uma dissipação ativa de
calor.
O custo de desenvolvimento do projeto é chamado custo de engenharia não
recorrente, já que após o desenvolvimento deste pode ser produzido qualquer número de
unidades sem um aumento do mesmo.
Para um projeto deste, além do equilíbrio entre as características citadas acima
deve ser estimado o tempo de mercado e o tempo de protótipo, que correspondem ao
tempo de projetar e fabricar o dispositivo até este ser vendido ao consumidor e o tempo
de fabricar uma versão funcional e não final do mesmo, respectivamente. Além do
tempo de verificação da segurança e de funcionalidade do mesmo.
Outro fator importante a ser considerado para um sistema embarcado é o custo
de uma unidade produzida, não incluso o preço do projeto.
Os sistemas embarcados possuem microcontroladores ou microprocessadores
que podem ser divididos em subtipos como: (i) propósito geral, que pode ser aplicado
para diversas funções, sendo estas implementadas por software e (ii) aplicação
específica, que contém hardware escalável dentro de uma determinada área de atuação,
ou de único propósito, e executam sempre a mesma função.
Estes hardware geralmente implementam mecanismos de processamento de
sinais digitais específicos para a sua área de atuação, os quais podem ser filtros, codecs,
controles de dispositivos, funções de modem, codificação, decodificação, entre outras
16. funções específicas necessárias para o funcionamento do mesmo.
Outras funções que vem cada vez mais sendo implementadas em sistemas
embarcados são as funções de comunicação sem fio para que os mesmos possam
funcionar como um sistema distribuído de processamento, aumentando assim
virtualmente o poder computacional de cada dispositivo.
Os sistemas embarcados hoje são usados em praticamente todo sistema ligado a
energia, por exemplo: celulares, câmeras digitais, filmadoras, videocassetes, vídeo
games, calculadoras, microondas, máquina de lavar, geladeira, fax, copiadoras,
impressoras, caixas registradoras, alarmes, caixas eletrônicos e nos veículos também no
controle de injeção de combustível, ABS e suspensão ativa, entre outros.
2.2. Conceitos de Segurança de Dados
A segurança das informações é uma preocupação dos homens, e estes vem
sempre desenvolvendo técnicas para tornar suas informações inacessíveis a pessoas não
autorizadas.
Segundo SIMON [21], uma das técnicas para a segurança de tais informações é
a criptografia, que consiste em um conjunto de métodos e técnicas para cifrar ou
codificar (processo chamado encriptar) informações legíveis por meio de um algoritmo,
convertendo um texto original em um texto ilegível, sendo possível mediante o processo
inverso, recuperar as informações originais. O processo de inverso a encriptação é
chamado de decriptação ou decifragem.
Em seus primórdios foram usadas técnicas simples de criptografia, porém
bastante eficientes na época, como cifrar textos alterando as letras desviando uma
quantidade de caracteres fixos no alfabeto. Porém, com a valorização da informação
surgiu um grande interesse em ter acesso às mesmas e assim surgiu um grupo voltado a
estudar como obter a informação original tendo como base o texto cifrado.
Com o crescente uso da internet como meio de comunicação entre computadores
as técnicas de criptografia se tornaram indispensáveis, e então foram implementados os
algoritmos de criptografia na comunicação entre eles.
Os principais algoritmos utilizados para prover segurança nas comunicações por
computador hoje são vistos a seguir.
17. 2.2.1. Algoritmos de Chaves Assimétricas
Os algoritmos de chaves assimétricas, também chamados de chaves públicas,
utilizam duas chaves diferentes para o processo de encriptação e decriptação das
mensagens. Cada um dos processos é de mão única, sendo fáceis de calcular e
praticamente impossíveis de serem revertidos.
Para se comunicar usando este método o receptor possui uma chave privada e
uma pública, a chave pública do receptor, que é disponível a todos, é então usada para
criptografar a mensagem que será enviada ao mesmo, que usa a sua chave privada para
descriptografar a mesma.
Este algoritmo também pode ser utilizado como técnica de assinatura digital,
onde o emissor usa a sua chave privada para criptografar a mensagem e o receptor usa a
chave pública do emissor para descriptografar a mensagem, e então pode verificar quem
é o verdadeiro emissor da mensagem.
Os algoritmos de chave assimétrica mais conhecidos e usados são: RSA (Rivest,
Shamir and Adleman), ElGamal.
2.2.2. Algoritmos de Chaves Simétricas
Os algoritmos de chaves simétricas, também chamados de chaves públicas,
utilizam apenas uma chave para poder cifrar e decifrar o dado. Neste caso é usado um
processo de mão dupla, em que após cifrar o mesmo pode ser decifrado usando a
mesma chave.
O maior problema desse algoritmo é como a chave será trocada entre os
usuários, pois qualquer intruso que tenha a chave pode tanto escrever quanto ler as
mensagens criptografadas.
Os algoritmos de chave simétrica mais conhecidos e usados são: DES (Data
Encryption Standard), IDEA (International Data Encryption Algorithm), RC (Ron's
Code ou Rivest Cipher), rijndael (mais conhecido como AES, Advanced Encryption
Standard), Blowfish.
O código fonte do Blowfish, usado neste trabalho, se encontra explicado no
anexo IV.
18. 2.2.3. Algoritmos de Hash
Os algoritmos de hash geram uma sequência de caracteres chamado de hash que
possui tamanho fixo, independente do tamanho da mensagem original. Essa técnica não
é considerada criptografia já que é uma operação de mão única, sendo assim, com o
hash não pode ser feito o caminho inverso e se chegar à mensagem clara novamente.
A segurança do algoritmo de hash está no fato de que qualquer alteração feita no
arquivo original irá alterar significativamente o resultado do hash, pois mesmo se um
único bit da mensagem original for alterado muitos bits do hash serão afetados.
Este tipo de técnica de segurança é usado para:
• Integridade de arquivos: ao se enviar um arquivo é anexado ao mesmo o seu
hash, ao chegar no destino o hash é recalculado e se for idêntico ao enviado
pode-se dizer que a mensagem não foi alterada.
• Segurança de senhas: como o hash não é reversível, é mais seguro guardar o
hash da senha e quando a mesma for usada se calcula o hash novamente, se
for igual ao salvo então a senha é validada.
• Assinaturas digitais: usando uma técnica de hash juntamente com uma
técnica de criptografia de chave pública pode se garantir a identidade do
emissor e integridade do documento.
A vulnerabilidade de um algoritmo de hash são as possibilidades de que dois
conjuntos de dados distintos geram o mesmo hash, esta possibilidade é chamada de
colisão. Os testes em algoritmos hash consistem em se chegar ao hash de um texto claro
conhecido ou desconhecido a partir de qualquer entrada de dado.
Os algoritmos de hash mais conhecidos e usados são: MD5, SHA-1 e
WHIRLPOOL.
O código fonte do SHA, usado neste trabalho, se encontra no anexo III.
2.3. Programas do Benchmark MiBench
Segundo COSTA [4], atualmente existe uma grande variedade de benchmarks,
tais como: Dhrystone, Linpack, HPL e MediaBench, sendo, em sua maioria,
desenvolvidos para uma área específica da computação. Dentre os benchmarks
19. existentes, um dos mais utilizados é o SPEC (Standard Performance Evaluation
Corporation), que atualmente está na versão SPEC2006 [23].
O SPEC [23] é um benchmark para computadores de uso geral, que agrupa um
conjunto de programas e dados divididos em duas categorias: inteiro e ponto flutuante.
Esse benchmark ganhou grande popularidade no âmbito comercial e acadêmico, por ser
um ótimo medidor de desempenho. Essa popularidade tem influenciado o
desenvolvimento de microprocessadores de uso geral, empregados em computadores
pessoais e servidores, de modo que os processadores são projetados para ter alta
performance no SPEC, segundo GUTHAUS et al [9].
De acordo com GUTHAUS et al [9], apesar do SPEC ser uma referência para
processadores de propósito geral, não é uma boa opção para avaliar desempenho de
microprocessadores dedicados. A principal característica dessa classe de processadores
é a diversidade de domínios de aplicação, e, além disso, não existe uma padronização
para o conjunto de instruções das arquiteturas, como acontece nos processadores de uso
geral, o que torna difícil a utilização da maioria dos benchmarks. Então, surgiram
algumas pesquisas para desenvolver benchmarks para processadores especializados.
Umas das principais é a suíte desenvolvida e conhecida como EEMBC (EDN Embedded
Microprocessor Benchmark Consortium). Este benchmark reúne vários domínios de
aplicação e disponibiliza um conjunto de benchmarks para avaliar cinco domínios de
processadores embarcados.
Neste contexto, GUTHAUS et al [9], apresentam o MiBench, um benchmark
desenvolvido para microprocessadores de uso específico, que possui trinta e cinco
aplicações divididas em seis domínios de aplicações (categorias): Automotive and
Industrial Control, Consumer Devices, Office Automation, Networking, Security e
Telecommunications.
Conforme DIAS [5], o MiBench é um benchmark livre, sendo basicamente
implementado utilizando a linguagem de programação C. Todos os programas que
compõem o MiBench estão disponíveis em código fonte, sendo possível executar em
qualquer arquitetura de microprocessador que possua um compilador C.
No MiBench são consideradas as classes de instrução: controle, aritmética
inteira, aritmética em ponto flutuante e acesso à memória. Nas categorias
Telecommunications e Security todas as aplicações têm mais de 50% de operações
inteiras na ULA (Arithmetic Logic Unit). A categoria Consumer Devices tem mais
operações de acesso à memória por causa do processamento de grandes arquivos de
20. imagem e áudio. A categoria Office Automation faz uso intenso de operações de
controle e acesso à memória. Os programas dessa categoria usam muitas chamadas de
funções para bibliotecas de string para manipular os textos, o que causa o uso de várias
instruções de desvio. Além disso, os textos ocupam bastante espaço na memória, o que
requer muitas instruções de acesso à memória. A categoria Automotive and Industruial
Control faz o uso intenso de todas as classes de instrução devido a sua aplicabilidade e
por fim, a categoria Networking faz muito uso de operações aritméticas de inteiros,
pontos flutuantes e acesso à memória, devido as tabelas de IPs para roteamento em rede,
ordenação de dados e outros. Em comparação, o benchmark SPEC apresenta,
aproximadamente, a mesma distribuição de operações para todas as categorias.
A Tabela 2.1 apresenta o número de instruções executadas para cada aplicação
contida no MiBench, para cada conjunto de dados padrão. Os conjuntos de dados padrão
são divididos em duas classes para cada categoria do benchmark: conjunto de dados
reduzido e conjunto de dados expandido. O primeiro representa o uso moderado da
aplicação do benchmark, enquanto que o segundo representa a sobrecarga da aplicação.
Tabela 2.1. Número de instruções executadas pelas aplicações do MiBench [9]
Aplicação Conjunto ReduzidoConjunto Expandido Aplicação Conjunto ReduzidoConjunto Expandido
basicmath 65.459.080 1.000.000.000 ispell 8.378.832 640.420.106
bitcount 49.671.043 384.803.644 rsynth 57.872.434 85.005.687
quicksort 43.604.903 595.400.120 stringsearch 158.646 38.960.051
susan.comers 1.062.891 586.076.156 blowfish.decode 52.400.008 737.920.623
susan.edges 1.836.965 732.517.639 blowfish.encode 42.407.674 246.770.499
susan.smoothing 24.897.492 1.000.000.000 pgp.decode 85.006.293 259.293.845
jpeg.decode 6.677.595 990.912.065 pgp.encode 38.960.650 824.946.344
jpeg.encode 28.108.471 543.976.667 rijndael.decode 23.706.832 140.889.705
lame 175.190.457 544.057.733 rijndael.encode 3.679.378 24.910.267
mad 25.501.771 272.657.564 sha 13.541.298 20.652.916
tiff2bw 34.003.565 697.493.266 crc32 52.839.894 61.659.073
tiff2rgba 36.948.939 1.000.000.000 fft.inverse 65.667.015 377.253.252
tiffdither 273.926.642 1.000.000.000 fft 52.625.918 143.263.412
tiffmedian 141.333.005 817.729.663 adpcm.decode 30.159.188 151.699.690
typeset 23.395.912 84.170.256 adpcm.encode 37.692.050 832.956.169
dijkstra 64.927.863 272.657.564 gsm.decode 23.868.371 548.023.092
patricia 103.923.656 1.000.000.000 gsm.encode 55.361.308 472.171.446
ghostscript 286.770.117 673.391.179
De acordo com DIAS [5], as seis categorias do MiBench oferecem estruturas
de programas que permitem explorar as funcionalidades do benchmark e do compilador
para se ajustarem melhor a um determinado microprocessador.
A descrição da funcionalidade dos MiBench, específicos para sistemas
embarcados e de categorias diferentes são:
21. • Dijkstra (Networking): é um algoritmo que calcula o menor caminho em
um grafo;
• Patrícia (Networking): é utilizado para representar tabelas de roteamento
em aplicações de redes de computadores;
• JPEG (Consumer Devices): é um compressor e descompressor de imagens
com o formato JPEG (Joint Photographic Experts Group);
• Lame (Consumer Devices): é um codificador de MP3 que suporta a
codificação da razão de bits constante, médio e variável;
• Mad (Consumer Devices): é um decodificador de áudio (MPEG - Moving
Picture Experts Group) de alta qualidade;
• Tiffmedian (Consumer Devices): é um algoritmo usado para reduzir o
número de cores em uma imagem;
• Tiffrgba (Consumer Devices): é um algoritmo que converte uma imagem
colorida no formato TIFF (Tagged Image File Format) em TIFF RGB (Red
Green Blue);
• Bitcount (Automotive and Industrial Control): é um algoritmo que testa a
habilidade de manipulação de bits do processador, contando o número de
bits em um vetor de inteiros;
• QuickSort (Automotive and Industrial Control): é um algoritmo que faz
ordenação de dados;
• Susan (Automotive and Industrial Control): é um algoritmo que faz o
reconhecimento de imagens através de suas bordas;
• Blowfish (Security): é um cifrador simétrico com chave variável de 32 até
448 bits, é ideal para encriptação doméstica;
• Rijndael (Security): é um algoritmo que faz criptografia com chaves do
tamanho de 128, 192 e 256 bits;
• SHA (Security): é um algoritmo que gera chaves de criptografia para troca
segura de dados e assinaturas digitais;
• ADPCM (Telecommunications): Adaptive Differential Pulse Code
Modulation é uma variação do PCM (Pulse Code Modulation). Uma
implementação frequente usa uma amostragem PCM de 16 bits e a
transforma em amostragem de 4 bits com uma compressão de 4:1;
22. • CRC32 (Telecommunications): é um algoritmo utilizado para detectar erros
na transmissão de dados e a redundância do CRC (Cyclic Redundancy
Check) em um arquivo;
• FFT (Telecommunications): é um algoritmo que executa a Transformação
de Fourier usado no tratamento de sinais digitais para encontrar as
freqüências em um sinal de entrada;
• GSM (Telecommunications): Global Standard for Mobile é um padrão para
a codificação e decodificação na Europa e em vários países. Usa uma
combinação de acesso múltiplo por divisão de tempo e frequência
(TDMA/FDMA) para codificar e decodificar streams de dados;
• Rsynth (Office Automation): é um sintetizador de texto para voz que inclui
várias partes de código de domínio público em um só programa;
• Stringsearch (Office Automation): é um algoritmo que faz a busca de uma
string em uma frase ou texto;
• Sphinx (Office Automation): é um decodificador de fala que pode trabalhar
com comandos de voz ou discursos.
Nesta monografia serão utilizados somente os seguintes algoritmos da área de
segurança presentes no MiBench: SHA, rijndael e Blowfish.
2.4. Ferramentas Utilizadas para Analisar o Consumo de Energia
Segundo FLINN [6], a utilidade de ferramentas que geram perfis de consumo de
energia deve estar diretamente relacionada em como associar de maneira definitiva o
custo de energia para cada evento de uma aplicação. E ainda segundo FLINN [6], a
atribuição dos custos de energia em detalhe, habilita a atenção para as áreas
problemáticas do código, o que fazem com que seja desejado mapear o consumo de
energia em nível de procedimentos.
Assim, o estudo das ferramentas de análise do consumo energético para software
são importantes, a fim de gerar melhorias para trechos de código mais custosos do ponto
de vista energético.
23. 2.4.1. NePSim
LUO et al [14], sentindo a falta de um simulador de desempenho e consumo de
energia para processadores de rede, desenvolveram o NePSim, Network Processor
Simulator. O NePSim é um sistema integrado que inclui um simulador de arquitetura,
um mecanismo de verificação formal automática para testes e validação e um estimador
de consumo de processos de rede.
Em seu trabalho, LUO et al [14], focaram seus testes e fundamentos na
especificação IXP1200 da Intel, que é um processador amplamente utilizado como
modelo representativo em pesquisas sobre processadores de rede. Eles implementaram
então todas as funcionalidades do IXP1200, com excessão do StrongARM que é
responsável por apenas aproximadamente 11% do consumo total do processador, tendo
na simulação todos os componentes parametrizáveis.
Para se obter uma redução significativa do consumo de energia, LUO et al [14]
utilizaram a técnica de escalonamento dinâmico de voltagem (DVS, Dynamic Voltage
Scaling) que consiste em reduzir a freqüência e voltagem quando o processador tem
baixa atividade e aumentar esses indicadores quando o processamento é requerido.
No trabalho de LUO et al [14], o NePSim obteve bons resultados, com uma
redução de até 17% no consumo de energia em alguns benchmarks, com redução de
apenas 6% em desempenho.
2.4.2. PowerScope
A ferramenta PowerScope foi projetada e implementada por FLINN &
SATYANARAYANAN [6] e tem como objetivo criar um perfil do consumo de energia
de uma aplicação. Para mapear esse consumo, a ferramenta simula exatamente como a
CPU mapeia os ciclos de processamentos em processos e procedimentos.
O protótipo da PowerScope usa amostragem estatística para gerar perfis de uso
de energia de um sistema computacional. Para gerar tais perfis, levando em conta o
24. overhead, o processo ocorre em dois estágios. No primeiro estágio, o de coleta de
dados, é divido em dois componentes, o monitor de sistema e o monitor de energia,
onde o primeiro recolhe informações periodicamente do computador em análise,
enquanto o segundo executa sobre o computador de coleta de dados e armazena os
dados que são retirados pelo monitor de sistema. Nessa primeira fase os trabalhos
precisam estar sincronizados. No segundo estágio, da análise dos dados, o analisador de
energia usa os resultados do estágio anterior para gerar os perfis de energia, conforme se
observa na Figura 2.1.
Figura 2.1 Etapas de como o PowerScope gera um perfil de energia. (a) Coleta de
dados e (b) Análise dos dados [6].
FLINN & SATYANARAYANAN [6] fizeram um estudo de caso Com o uso do
PowerScope utilizando uma placa de vídeo, no qual se observou efeitos na redução do
consumo de energia da compressão de vídeo, tamanho de exibição, gerenciamento de
energia de rede e gerenciamento de energia de disco, a fim de mostrar a eficiência da
ferramenta para a redução do consumo de energia. Após a análise dos perfis de energia
gerados, foi observado que a maior quantidade de energia estava sendo utilizada por
dispositivos de hardware ociosos. Após configurações baseadas nos resultados obtidos
foi atingida uma redução de até 46% no consumo total de energia de uma aplicação de
vídeo, com certa redução na qualidade do vídeo.
25. 2.4.3. JouleTrack
Em seu trabalho SINHA & CHANDRAKASAN [22], evitaram uma
caracterização do consumo de energia para cada instrução, usando então modelos para
prever o consumo de energia.
Utilizando uma fonte de energia para o microprocessador de forma
independente, e utilizando uma fonte fixa de tensão ligada a um multímetro, SINHA &
CHANDRAKASAN [22] realizaram testes com os microprocessadores StrongARM
AS-1100 e Hitachi SH4 a fim de observar variações no consumo da corrente por
instruções, conforme se observa na Figura 2.2.
Os resultados obtidos por SINHA & CHANDRAKASAN [22] com os testes
foram que o nível de variação do consumo de energia nas instruções é em torno de 38%,
em testes executando programas de benchmark foi observado que sobre diferentes
fontes de tensão e corrente a variação máxima de corrente era menor que 8%. Com estes
resultados SINHA & CHANDRAKASAN [22] concluíram que o consumo de energia
de um trecho de código é independente do código, depende apenas da tensão de
operação e frequência do processador.
Figura 2.2 Corrente consumida por instruções do processador ARM medidas em [22].
Assim, ao executar a mesma sub-rotina em diferentes frequências, mas com a
26. mesma tensão e medir o consumo de energia, pode-se observar uma curva de
crescimento linear com o tempo de execução e com a inclinação proporcional
equivalente à quantidade de vazamento, quantidade essa que apresentou valores
desviando ao máximo em 6% dos valores reais medidos.
Assim, SINHA & CHANDRAKASAN [22] desenvolveram o JouleTrack, que é
um sistema web onde o usuário envia o código em linguagem C e escolhe o modelo de
predição. Então o seu código é executado em um simulador ARM que produz
estatísticas como saída, como tempo de execução por exemplo. Estas estatísticas são
usadas como base para um mecanismo processar o perfil de energia e gerar um gráfico
usando as metodologias descritas por SINHA & CHANDRAKASAN [22], conforme se
observa na Figura 2.3.
Figura 2.3. Diagrama do JouleTrack
2.4.4. SNU Energy Explorer Web
Segundo LEE et al [12], as metodologias que utilizam computadores que
controlam multímetros ou conversores analógicos digitais para medir o consumo de
energia são metodologias não restritas a plataformas específicas, com certas limitações.
Então, LEE et al [12] propuseram uma ferramenta web para análise do consumo de
27. energia para sistemas embarcados, a SEE Web, ferramenta usada pela Universidade
Nacional de Seul.
Em [12], LEE et al desenvolveram um modelo de máquina de estados limitada
que isola o consumo de energia dinâmico da fuga de energia, com o uso da técnica de
medição por cycle-accurate. Além de também desenvolver um simulador de instruções.
Para utilizar a ferramenta é necessário acessar o endereço onde a ferramenta está
hospedada, em seguida configurar a arquitetura desejada, incluindo o clock do
processador, organização de cache e frequência de clock de memórias e enviar a
imagem binária da aplicação. Em seguida é recebida a análise do uso de energia da
aplicação, incluindo informações do consumo de energia para cada componente do
sistema.
2.4.5. Sim-Panalyzer
O Sim-Panalyzer é um simulador de consumo de energia baseado no simulador
de processadores SimpleScalar, descrito por AUSTIN et al [3]. Segundo AUSTIN et al
[3], o SimpleScalar é um simulador de arquitetura computacional que modela um
computador virtual com CPU, Cache e hierarquia de memória e com base nesse modelo
consegue simular programas reais executando sobre tais plataformas.
Sendo uma ferramenta baseada em um simulador de arquitetura detalhada, o
Sim-Panalyzer consegue modelar de forma detalhada tanto a potência dinâmica quanto
a de fuga. Para obter os resultados detalhados a simulação é feita separadamente,
gerando modelos de energia para os seguintes componentes: cache, caminho de dados e
unidade de execução, circuitos de clock e unidades de I/O (entrada e saída).
Os parâmetros para a geração dos perfis de cada componente do computador é
dado como entrada para o simulador Sim-Panalyzer que juntamente com o SimpleScalar
gera os padrões de consumo de energia. O anexo I mostra um exemplo de arquivo de
configuração usado pelo Sim-Panalyzer.
Segundo AUSTIN et al [2], o Sim-Panalyzer foi escrito originalmente com base
28. na arquitetura de instruções (ISA) da família de processadores ARM, obtendo
excelentes resultados em simulações deste tipo.
O resultado do consumo do Sim-Panalyzer é dividido em áreas específicas de
consumo do sistema embarcado, conforme Tabela 2.2. O Anexo II mostra como
exemplo a saída do simulador Sim-Panalyzer para o algoritmo SHA-1 tendo como
parâmetro o arquivo entrada1 de 100 KB, utilizado como parâmetro neste trabalho.
Tabela 2.2. Áreas de consumo apresentadas no Sim-panalyzer e os seus significados.
Áreas de Consumo Significado
aio Endereço da unidade de I/O
dio Dados da unidade I/O
irf Registradores de inteiro
fprf Registradores de ponto flutuante
il1 cache de instruções nível 1
dl1 cache de dados nível 1
dl2 cache de dados nível 2
itlb Tabela de instruções do TLB
dtlb Tabela de dados do TLB
btb Branch Target Buffer
bimod Previsor bimodal
ras Retorno da pilha de endereço
logic Circuito lógico aleatório
clock Relógio gerador de clock do sistema
Microarquitetura, a maneira com que a ISA é implementada em um
uarch
processador
2.5. Técnicas para Medição Utilizadas no Trabalho
Para o estudo do consumo de energia dos algoritmos de criptografia presentes
no MiBench serão usados quatro métodos de medição do consumo de energia.
29. O primeiro método usa a descarga da bateria de um dispositivo para medir o
consumo energético do mesmo ao executar os algoritmos. O segundo método é teórico e
utiliza dados técnicos do processador e do algoritmo para obter um provável consumo
energético do processador ao executar o algoritmo. O terceiro método é baseado em
simulação, onde o simulador de consumo para sistemas embarcados Sim-Panalyzer é
utilizado para estimar o consumo dos algoritmos. E o último método é um experimento
feito utilizando um osciloscópio para medir a variação da corrente consumida pelo
processador ao executar os algoritmos estudados.
2.5.1. Metodologia 1: Medição de Descarga de Baterias
Para os primeiros testes o método de medição empregado é o mesmo usado por
COSTA [4], onde foi feita a estimativa de consumo a partir do nível de carga da bateria
antes e depois da execução de uma determinada aplicação. Como os algoritmos de
segurança são executados muito rapidamente no processador em questão, foi usado um
Shell script para que o mesmo fosse executado um determinado número de vezes e
verificar o nível de carga da bateria após esse número de execuções. Assim, o consumo
de energia de cada ciclo do algoritmo é calculado usando o consumo de energia total
dividido pela quantidade de ciclos que o algoritmo foi executado. Também é calculado
o tempo de execução de cada algoritmo dividindo o tempo de processo total pelo
número de execuções feita pelo script.
Os testes foram realizados em grupos de 50, 100, 200, 500 e 1000 execuções
para cada arquivo em cada algoritmo, e a medição do descarregamento da bateria é feita
utilizando a diferença do nível da carga da bateria, apresentada no arquivo
/proc/acpi/battery/BAT1/state do sistema operacional Linux, ao iniciar e ao terminar a
execução de cada algoritmo. Para a medição do tempo de processo utilizado pela bateria
foi utilizado o comando “time”, presente no Linux, ao executar o conjuunto de
execuções de cada algoritmo.
Para a execução desses conjuntos foi escrito um Shell Script para cada um dos
algoritmos em que são passados parâmetros como a quantidade de execuções e o
arquivo de entrada, que será criptografado ou calculado o hashing.
30. Visando obter uma estimativa um pouco mais precisa do consumo energético
do algoritmo foi medido, utilizando a mesma metodologia, o consumo do dispositivo
nas mesmas condições de funcionamento com o processador ocioso, para tal processo
foi escrito um Shell script que faz com que o processador fique ocioso por determinado
tempo.
O script utilizado segue o padrão:
#!/bin/sh
FILENAME=/home/lealdo/Documentos/TCC/Algoritmos/blowfishT/Output/ResBF_$3_$2_$1.txt
if [ $# -ne 3 ]
then
echo "O Shell Script deve ter como parametro de entrada o número de execuções e o arquivo
de entrada"
exit 1
fi
getInfo()
{
echo "Execuction: #"$num >> $FILENAME
echo "Present rate(mW) : " `cat /proc/acpi/battery/BAT1/state | grep "present rate" | awk '{ print $3
}'` >> $FILENAME
echo "Present Voltage(mV): " `cat /proc/acpi/battery/BAT1/state | grep "present voltage" | awk
'{print $3}'` >> $FILENAME
echo "Remaining capacity(mWh): " `cat /proc/acpi/battery/BAT1/state | grep "remaining" | awk
'{print $3}'` >> $FILENAME
}
getInfo
for num in $(seq $1)
do
echo "Execuction: #"$num
./bf $3 $2 /home/lealdo/Documentos/TCC/Algoritmos/blowfishT/Output/out_$2_$num.txt
1234567890abcdeffedcba0987654321
done
getInfo
Este script escrito possui como parâmetros o número de execuções a ser
executadas, o arquivo a ser criptografado e se o processo é de encriptação ou
decriptação. No script é definida a função getInfo que captura as informações da
bateria. A função básica do script é capturar as informações da bateria, em seguida
executar o algoritmo a quantidade de vezes passado como parâmetro, para o arquivo
usado como parâmetro de entrada, e em seguida capturar novamente as informações da
bateria. Por exemplo, para executar o programa Blowfish em encriptação 100 vezes
para o arquivo entrada1 o script é chamado da seguinte forma: ./scriptbf.sh 100
entrada1 E.
Após a aquisição destes dados foram feitos os seguintes cálculos:
் ௗ ௫௨çã ௧௧ (௦)
1. ܶ݁݉ݑܿ݁ݔ݁ ݎ çã = ொ௨௧ௗௗ ௗ ௫௨çõ௦
31. ௦௨ ௗ ௧ ௧௧ ()
2. ݑܿ݁ݔ݁ ݎ ݉ݑݏ݊ܥçãܣ( ℎ) = ொ௨௧ௗௗ ௗ ௫௨çõ௦
ா ்௧ ()
3. ݉ ݁ݐ݊݁ݎݎܥé݀݅ܽ (் = )ܣ ௗ ௫௨çã ௧௧
4. ܲݐê݊ܿ݅ܽ ݉é݀݅ܽ (ܹ ) = ݉ ݁ݐ݊݁ݎݎܥé݀݅ܽ (ܸ × )ܣ௧
5. ݐܲ = )ܬ( ݉ݑݏ݊ܥê݊ܿ݅ܽ ݉é݀݅ܽ (ܹ ) × ܶ݁݉ݑܿ݁ݔ݁ ݁݀ çã)ݏ(
2.5.2. Metodologia 2: Estimativa com Tempo de Execução e
Características do Processador
Segundo os estudos de SINHA & CHANDRAKASAN [22] o consumo de
energia de um processador depende apenas da voltagem e da frequência do mesmo, já
que o consumo de corrente do processador varia muito pouco de acordo com as
diferentes instruções.
Seguindo tal conceito, a segunda metodologia de estimativa de consumo de
energia usada neste trabalho usa como base o número de ciclos de clock necessários
para a execução do algoritmo, juntamente com as características do processador usado.
Sendo assim, o número de ciclos de clock necessários para a execução de um algoritmo
está diretamente relacionado com o consumo energético, sendo atribuído a cada ciclo
uma pequena quantidade de energia consumida.
O custo básico para a execução de um algoritmo é dado pelos seguintes
cálculos:
ேú ௗ ௦ ௦௦á௦ (௦)
1. ܶ݁݉ݑܿ݁ݔ݁ ݁݀ çã = )ݏ( ೞ
ௗௗ ௗ ௦௦ௗ ( )
ೞ
2. ܲݐê݊ܿ݅ܽ ܸ݀ = ) ܹ( ݎ݀ܽݏݏ݁ܿݎ ௦௦ௗ × )ܣ( ݁ݐ݊݁ݎݎܥ
3. ݐܲ = )ܬ( ܽ݀݅݉ݑݏ݊ܿ ܽ݅݃ݎ݁݊ܧê݊ܿ݅ܽ ݀× )ܹ( ݎ݀ܽݏݏ݁ܿݎ
ܶ݁݉ݑܿ݁ݔ݁ ݁݀ çã)ݏ( ݉ݐ݅ݎ݈݃ܽ ݀
Para a obtenção da quantidade de ciclos de clock foi utilizada a função
“clock_t” da linguagem C ao ser executado o código. A voltagem, a velocidade e
características do processador podem ser obtidas através do site do fabricante do
32. mesmo.
Os dados sobre a amperagem máxima e faixa de voltagem de operação dos
processadores podem ser obtidos nos datasheet dos mesmos, geralmente fornecidos
pelo fabricante.
2.5.3. Metodologia 3: Simulação usando o Sim-Panalyzer
A terceira metodologia empregada foi o uso do simulador de consumo de
energia para sistemas embarcados Sim-Panalyzer, que já foi devidamente explicado na
seção 2.4.5.
A aplicação do Sim-Panalyzer é feita de forma simples, necessitando apenas
executar o simulador passando como parâmetro a arquitetura a ser simulada, juntamente
com as características do sistema, e o programa compilado para a arquitetura ARM,
juntamente com os parâmetros para a execução do mesmo.
Para se obter o consumo total do algoritmo é necessário apenas somar consumo
energético de cada componente simulado pelo Sim-Panalyzer, obtendo então o consumo
geral do dispositivo simulado.
2.5.4. Metodologia 4: Experimental com Osciloscópio
Os processadores atuais, para o seu funcionamento, utilizam uma voltagem fixa,
chamada de Vcore neste trabalho. Assim, a forma de se obter um gráfico do real consumo
energético de um processador é medir a corrente drenada pelo mesmo em função do
tempo, e este é o principal objetivo desta quarta metodologia.
Devido à dificuldade de acesso aos esquemas elétrico do hardware da placa mãe
disponível para teste e devido a propriedade intelectual, ficou impossibilitada a medição
do consumo diretamente nos pinos alimentadores do processador, impossibilitando
então a obtenção do gráfico de consumo mais real possível.
Após a inviabilidade da proposta inicial, esta quarta metodologia utilizada no
33. trabalho foi alterada e assumiu como base a medição da corrente total consumida pelo
conector ATX12V [1] da placa mãe, que fornece energia para os reguladores de tensão
que por sua vez fornecem energia para o processador. Ao calcular o consumo do
processador deve ser considerado o fato de os sistemas reguladores de voltagem
apresentam eficiência média de 80%, segundo SCHUELLEIN [7].
A medição é feita inserindo um resistor shunt de valor conhecido em série entre
a fonte de alimentação e a placa mãe e usando um osciloscópio é medida a variação de
voltagem antes e depois do resistor, conforme esquema da Figura 2.4. Com este circuito
montado é possível então calcular a corrente consumida pela placa mãe, e
consequentemente a sua potência consumida, através das seguintes fórmulas:
ܸܽܽ݅ݎçã) ܸ( ݉݁݃ܽݐ݈ܸ ݁݀
= )ܣ( ݁ݐ݊݁ݎݎܥ
ܴ݁ݐݏ݅ݏê݊ܿ݅ܽ (ܱℎ݉)
ܲݐê݊ܿ݅ܽ (ܹ ) = )ܸ( ݉݁݃ܽݐ݈ܸ .)ܣ( ݁ݐ݊݁ݎݎܥ
Figura 2.4. Esquema utilizado para as medições com a metodologia 4.
34. 3. Testes, Resultados e Análise
No presente trabalho foram realizados testes aplicando as metodologias
apresentadas na seção 2.5 usando os algoritmos SHA, rijndael (melhor conhecido como
AES) e Blowfish. Os arquivos de entrada e chaves usados como parâmetro são
apresentados nas Tabelas 3.1 e 3.2, respectivamente. Devido a problemas de compilação
o algoritmo rijndael somente foi aplicado neste trabalho usadando o Sim-Panalyzer
(metodologia 3).
Tabela 3.1. Arquivos usados como parâmetro para os testes.
Nome Tamanho
entrada1 100 KB
entrada2 500 KB
Money.mp3 4,5 MB
vídeo.MPG 46,8 MB
Tabela 3.2. Chaves usadas como parâmetro para os testes.
Algoritmo Nome da Chave Tamanho
Chave1 32 bits
Blowfish Chave2 256 bits
Chave3 448 bits
Chave1 128 bits
Rijndael (AES) Chave2 192 bits
Chave3 256 ts
3.1. Resultados para Medição de Descarga de Baterias em Notebook
A primeira metodologia de teste de consumo dos algoritmos foi aplicada
utilizado um notebook Toshiba modelo T135 – S1305, com processador Intel Pentium
SU4100, 3GB de memória RAM DDR3, HDD de 320GB e tela de 13,3’, executando o
sistema operacional Linux em sua distribuição Ubuntu 9.10.
35. Devido dispositivo possuir um processador da série Intel ULV (Ultra Low
Voltage, em inglês Voltagem Ultra Baixa) é esperado que ele possua o menor consumo
de energia dentre os dispositivos testados. Os resultados de consumo de energia
apresentados nesta seção engloba todo o dispositivo usado, incluindo dispositivo de
rede sem fio, monitor e memórias.
3.1.1 Algoritmo SHA-1
Os resultados dos testes com o algoritmo SHA são apresentados na Tabela 3.3,
em que se observa o correto funcionamento do dispositivo usado para testes, aliado a
um baixo consumo médio, de apenas 12,2 W.
Tabela 3.3. Resultados da execução do algoritmo SHA usando a primeira metodologia.
Energia Potência Energia
Entrada Tempo (s)
Consumida (J) Média (W) Excedida* (J)
entrada1 0,061 0,724 11,904 0,121
entrada2 0,079 0,930 11,730 0,144
Money.mp3 0,234 2,619 11,216 0,303
vídeo.MPG 1,375 19,157 13,935 5,521
3.1.2 Algoritmo Blowfish
Durante os testes com o algoritmo Blowfish não foi observada variação
considerável de potência média consumida com mudança das chaves, ou de operações,
de encriptação (E) para decriptação (D). Porém esta variação de potência foi
significativa com o aumento do tamanho do arquivo passado como parâmetro, sendo
obtido uma média de consumo de 12,3 W para os arquivos entrada1 e entrada2 e 15,8
W para os arquivos Money.MP3 e vídeo.MPG.
Com a mudança do tamanho da chave também não foi observada nenhuma
36. mudança no tempo de execução, levando à conclusão de que não há ligação entre o
tamanho da chave e o consumo de energia do algoritmo. Este resultado já tinha sido
obtido e observado pelo autor de [8], via simulação.
Os dados obtidos com os testes usando o algoritmo Blowfish para as chaves
chave1 , chave2 e chave3 são apresentado nas tabelas 3.4 , 3.5 e 3.6, respectivamente.
Tabela 3.4. Resultados da execução do algoritmo Blowfish (chave de 32 bits) usando a
metodologia 1.
Energia Potência Energia
Entrada Tempo (s)
Consumida (J) Média (W) Excedida* (J)
entrada1 0,022 0,249 11,546 0,035
entrada2 0,070 0,918 13,043 0,220
E
Money.mp3 0,505 7,442 14,734 2,432
vídeo.MPG 4,917 72,382 14,721 23,611
entrada1 0,021 0,283 13,313 0,072
entrada2 0,068 0,980 14,369 0,303
D
Money.mp3 0,492 7,014 14,245 2,130
vídeo.MPG 4,926 71,474 14,511 22,619
Tabela 3.5. Resultados da execução do algoritmo Blowfish (chave de 256 bits) usando a
metodologia 1.
Energia Potência Energia
Entrada Tempo (s)
Consumida (J) Média (W) Excedida* (J)
entrada1 0,023 0,246 10,641 0,017
entrada2 0,070 0,933 13,373 0,241
E
Money.mp3 0,488 8,211 16,829 3,372
vídeo.MPG 4,896 84,370 17,233 35,810
entrada1 0,019 0,194 10,264 0,007
entrada2 0,070 1,003 14,253 0,305
D
Money.mp3 0,497 8,491 17,068 3,557
vídeo.MPG 4,962 82,814 16,690 33,59734
37. Tabela 3.6. Resultados da execução do algoritmo Blowfish (chave de 448 bits) usando a
metodologia 1.
Energia Energia
Potência
Entrada Tempo (s) Consumida Excedida*
Média
(J) (J)
(W)
entrada1 0,022 0,238 10,853 0,020
entrada2 0,071 0,809 11,379 0,104
E 0,487 7,963 16,351 3,132
Money.mp3
vídeo.MPG 4,786 74,066 15,476 26,595
entrada1 0,021 0,237 11,472 0,032
entrada2 0,073 0,953 13,040 0,228
D
0,488 7,799 15,969 2,955
Money.mp3
vídeo.MPG 4,771 75,686 15,865 28,368
3.2. Resultados para Estimativa de Consumo com Base nas Características do
Processador
A segunda metodologia usada no trabalho usa como base para cálculo o
processador Intel Celeron 2.2 GHz. No datasheet fornecido pela Intel para o Celeron 2.2
GHz [10] a voltagem de operação do mesmo é de 1.10 V admitindo uma corrente
máxima de 35 A, o que resulta em uma potência máxima do processador de 38,5 W.
3.2.1. Algoritmo SHA-1
O algoritmo SHA-1 apresentou um gasto médio de energia por byte de 0,32 µJ
por byte para o processo de geração de hash, este valor não apresentou variação acima
de 10% em relação à média para nenhum cálculo. Os resultados sobre número de ciclos
necessários, tempo de execução e energia gasta são apresentados na tabela 3.7.
38. Tabela 3.7. Resultados da estimativa de consumo para algoritmo SHA.
Entradas Ciclos Tempo (s) Energia (J)
entrada1 2000000 0,000909 0,035
entrada2 10000000 0,004545 0,175
Money.mp3 80000000 0,036364 1,4
vídeo.MPG 860000000 0,390909 15,05
3.2.2. Algoritmo Blowfish
Os resultados para o algoritmo Blowfish foram os mesmos, para qualquer
tamanho da chave ou de processos de encriptação ou decriptação, já que os resultados
para o número de clock obtidos foram os mesmos independentes destes parâmetros. O
gasto médio por byte para o processo variou de acordo com o tamanho da entrada,
apresentando uma média de 0,85 µJ para as entradas menores (entrada1 e entrada2) e
uma média de 1,59 µJ para as entradas maiores (Money.mp3 e vídeo.MPG). As
estimativas de consumo do algoritmo Blowfish para as entradas simuladas foram as
apresentadas na Tabela 3.8 .
Tabela 3.8. Resultados da estimativa de consumo para algoritmo Blowfish.
Entradas Ciclos Tempo (s) Energia (J)
entrada1 4000000 0,001818 0,07
entrada2 30000000 0,013636 0,525
Money.mp3 430000000 0,195455 7,525
vídeo.MPG 4440000000 2,018182 77,7
3.3. Resultados usando o Simulador Sim-Panalyzer
Nesta terceira metodologia empregada será usado o simulador de consumo de
energia Sim-Panalyzer, e conforme descrito na seção 2.5.3 é necessário como um dos
parâmetros as características do processador a ser simulado durante o teste. Para este
trabalho foi utilizado a configuração padrão presente no Sim-Panalyzer, apresentada no
39. Anexo I.
Esta metodologia será aplicada apenas aos arquivos entrada1 e entrada2, pois as
o processo de simulação durava horas para arquivos maiores que 1 MB no dispositivo
que executava a simulação.
O dispositivo simulado apresentou uma potência média de 4 W, a menor dentre
os métodos. Este baixo consumo é devido à simplicidade do dispositivo, o que resulta
em um desempenho muito baixo, resultando em um tempo de execução grande e em
consequência um maior consumo energético.
3.3.1. Algoritmo SHA-1
Os resultados para a geração do hash usando o algoritmo SHA é apresentado na
Tabela 3.9, e apresenta um tempo de execução cerca de cem vezes maior que os outros
dispositivos usados no trabalho.
Tabela 3.9. Resultados da simulação de consumo para algoritmo SHA.
Entrada Tempo (s) Nº Instruções Potência Média (W) Energia (J)
entrada1 25 4451010 4,10 102,61
entrada2 124 22221949 4,13 511,87
3.3.2. Algoritmo Blowfish
Os testes com o algoritmo Blowfish apresentaram resultados com menor
desempenho ainda, se comparado aos outros dispositivos testados, demandando 634,95
Joules para encriptar um arquivo de 100 KB, levando 164 s para executar tal tarefa.
Outro resultado a ser observado no algoritmo Blowfish é o fato de chaves de
tamanho diferente não alterarem os tempos de execução do algoritmo. Os dados das
simulações com o algoritmo Blowfish podem ser vistos na tabela 3.10.
40. Tabela 3.10. Resultados da simulação de consumo para algoritmo Blowfish.
Tempo
Chave Operação Entrada Nº Instruções Energia (J)
(s)
E entrada1 17351676 164 634,9424
D entrada1 17349111 163 649,718
Chave 1
E entrada 2 86042866 798 3083,9508
D entrada 2 86030231 798 3181,3068
E entrada1 17352420 164 640,7808
D entrada1 17349983 165 653,3175
Chave 2
E entrada 2 86043570 799 3120,8141
D entrada 2 86031010 795 3144,702
E entrada1 17353136 164 639,7312
D entrada1 17350699 163 646,295
Chave 3
E entrada 2 86044319 799 3105,2336
D entrada 2 86031608 797 3150,4613
Um gráfico comparativo do consumo de energia com a variação das chaves para
o algoritmo Blowfish pode ser observado na Figura 3.1, e a estimativa da potência
média consumida por cada componente do sistema simulado pode ser observada na
tabela 3.11.
Energia (J)
3500,00
3000,00
2500,00
2000,00
1500,00
1000,00
500,00 Energia (J)
0,00
Chave1
Chave2
Chave3
Chave1
Chave2
Chave3
Chave1
Chave2
Chave3
Chave1
Chave2
Chave3
Encriptação Decriptação Encriptação Decriptação
Entrada1 Entrada1 Entrada2 Entrada2
Figura 3.1. Gráfico do custo energético para execução do algoritmo Blowfish.
41. Tabela 3.11. Potência simulada ao executar o algoritmo Blowfish.
Área do Encriptação Decriptação Diferença entre
Sistema (W) (W) E/D
aio 0,2645 0,2562 -3%
dio 0,8165 0,9045 11%
irf 0,1334 0,1340 0%
fprf 0,0000 0,0000 0%
il1 0,4513 0,4467 -1%
dl1 0,2941 0,2919 -1%
dl2 0,2941 0,2919 -1%
itlb 0,0172 0,0170 -1%
dtlb 0,0185 0,0184 -1%
btb 0,5348 0,5390 1%
bimod 0,0156 0,0157 1%
ras 0,0000 0,0000 0%
logic 0,0000 0,0000 0%
clock 0,1808 0,1808 0%
uarch 0,8688 0,8717 0%
TOTAL (W) 3,8894 3,9676 2%
3.3.3. Algoritmo Rijndael
Ao simular a execução do algoritmo rijndael foi observado que a quantidade de
instruções para a operação de decriptação é em média 95,56% o número de instruções
da encriptação, e por este motivo, o tempo gasto na decriptação é em media 93,16% do
tempo gasto na encriptação. Também é observado que a diferença entre o tempo de
execução e o número de instruções executadas da entrada1 para a entrada 2 é em media
502,56% do tempo para a entrada1, que é um resultado esperado, já que o tamanho da
entrada2 é cinco vezes o tamanho da entrada1. Os dados da aplicação da metodologia 3
no algoritmo rijndael pode ser observado na Tabela 3.12.
Com os resultados da simulação do algoritmo rijndael também foi observado
que com o aumento do tamanho da chave é também aumentado o número de instruções
a serem executadas, e consequentemente o tempo de execução e o consumo de energia.
Tal aumento do consumo energético com a mudança da chave pode ser melhor
observado na figura 3.2 e a proporção deste aumento é apresentada na Tabela 3.13.
42. Tabela 3.12. Resultados da simulação de consumo para algoritmo rijndael.
Operação Entrada Nº Instruções Tempo (s) Energia (J)
E entrada1 8211594 66 264,67
D entrada1 7801604 60 238,68
Chave 1
E entrada 2 41033638 329 1329,95
D entrada 2 38986239 299 1159,58
E entrada1 9139751 72 286,17
D entrada1 8736254 66 256,07
Chave 2
E entrada 2 45674310 359 1426,95
D entrada 2 43658955 330 1284,66
E entrada1 10125532 78 316,82
D entrada1 9728480 73 286,68
Chave 3
E entrada 2 50602953 391 1582,38
D entrada 2 48619729 363 1389,89
Consumo de Energia do Rijndael
1800,00
1600,00
1400,00
1200,00
1000,00
800,00
600,00
400,00 Energia (J)
200,00
0,00
Chave1
Chave2
Chave3
Chave1
Chave2
Chave3
Chave1
Chave2
Chave3
Chave1
Chave2
Chave3
Encriptação Decriptação Encriptação Decriptação
Entrada1 Entrada1 Entrada2 Entrada2
Figura 3.2. Gráfico do custo energético para execução do algoritmo rijndael.
Tabela 3.13. Aumento de consumo energético de acordo com o tamanho da chave.
Chave1 para Chave1 para Chave2 para
Algoritmo
Chave2 Chave3 Chave3
Entrada1 E 8,12% 19,70% 10,71%
Entrada1 D 7,28% 20,11% 11,95%
Entrada2 E 7,29% 18,98% 10,89%
Entrada2 D 10,79% 19,86% 8,19%
A estimativa da potência média consumida por cada componente do sistema
simulado para o algoritmo rijndael pode ser observada na tabela 3.14.
43. Tabela 3.14. Potência simulada ao executar o algoritmo rijndael.
Área do Sistema Encriptação (W) Decriptação (W) Diferença entre E/D
aio 0,2577 0,2611 1,29%
dio 0,8952 0,7424 -17,07%
irf 0,1374 0,1458 6,15%
fprf 0,0000 0,0000 0,00%
il1 0,4628 0,4656 0,59%
dl1 0,2869 0,2873 0,13%
dl2 0,2869 0,2873 0,13%
itlb 0,0179 0,0178 -0,37%
dtlb 0,0181 0,0181 0,09%
btb 0,5081 0,5101 0,38%
bimod 0,0148 0,0149 0,34%
ras 0,0000 0,0000 0,00%
logic 0,0000 0,0000 0,00%
clock 0,1808 0,1808 0,00%
uarch 0,9518 0,9663 1,53%
TOTAL (W) 4,0185 3,8975 -3,01%
3.4. Resultados para Experimento usando o Osciloscópio
A quarta metodologia aplicada neste trabalho foi aplicada em um computador
com processador Intel Celeron 2.2 Ghz, 512 Mb de memória RAM, HD de 40 Gb e
placa mãe Foxconn 650M02-G-6.
Para a aplicação do método foram usados três resistores em paralelo, com 1 ohm
de resistência e 20w de potência cada, resultando em um resistor equivalente de 0,333
ohms e 60 w de potência. Este conjunto de resistores foi ligado em série no cabo de
alimentação da placa mãe, conforme descrito em 2.5.4 e mostrado na figura 3.3. Após a
montagem foi conectado cada um dos canais do osciloscópio da marca Owon, modelo
PDS5022S, nas extremidades do conjunto de resistores para medir a queda de voltagem
provocada pela passagem de corrente.
44. Figura 3.3. Resistores ligado em série com o fio de alimentação da placa mãe.
Para efeito comparativo, inicialmente foi medido o consumo do sistema ocioso
que apresentava uma queda de 0,5V entre as extremidades do resistor, que significa uma
passagem de corrente de 1,5A e uma potência de 17,25W para o sistema ocioso. Com o
osciloscópio conectado também foi observado um aumento significativo do consumo de
energia com a movimentação do mouse, que resultou em uma queda de 1V entre as
extremidades do resistor, que resulta em uma corrente de 3A e uma potência de 33W.
A voltagem medida na entrada do conjunto de resistores com o sistema ocioso
foi de 12V, com uma queda média da mesma para 11,68V com o sistema com carga.
Estes valores foram usados como parâmetros para o cálculo do consumo de energia
nesta metodologia.
3.4.1. Algoritmo SHA-1
Para o algoritmo SHA-1 foram observados dois diferentes patamares de
características, sendo divididas entre as entradas pequenas (entrada1 e entrada2) e as
entradas grandes (Money.mp3 e vídeo.MPG). Para as entradas pequenas a potência
média usada pelo processador foi de 30,9 W, tendo um aumento para a média de
49,44W ao executarem o mesmo algoritmo para as entradas grandes.
O consumo por byte medido para o algoritmo SHA-1 foi de 12,07 µJ para a
entrada de 100 KB, 3,02 µJ para a entrada de 500 KB e em média 1,30 µJ para os
45. arquivos de 4,5 MB e 46,8 MB, que não apresentou variação significativa do consumo
por byte.
Em testes iniciais foram usados os dois canais do osciloscópio um na entrada e
outro na saída da corrente no conjunto de resistores, representados pelo o gráfico
amarelo e o vermelho, respectivamente, na figura 3.4. O gráfico apresentado em verde é
dado pela subtração das voltagens de entrada pela de saída, resultando no gráfico de
queda da voltagem. Porém para efeito de cálculo do consumo, o gráfico da subtração é
semelhante ao gráfico de saída, já que o gráfico de entrada tem pouca variação durante a
execução. Assim foram feitas novas medições usando apenas a voltagem de saída do
conjunto de resistores buscando um gráfico mais nítido da queda de voltagem. Este
gráfico juntamente com os dados relativo ao consumo de energia são encontrados na
tabela 3.15.
(a) (b)
(c) (d)
Figura 3.4: Gráficos da variação da voltagem ao executar o algoritmo SHA-1 para as
entradas: (a) entrada1, (b) entrada2, (c) Money.mp3 e (d) vídeo.MPG.
46. Tabela 3.15. Gráficos obtidos ao executar o algoritmo SHA e dados da interpretação dos
mesmos.
SHA-1
Arquivo entrada1
Tempo entre execuções 0,16 s
Tempo por execução 0,04 s
Variação de Voltagem 0,96 V
Potência Média durante 30,90 W
execução
Consumo 1,24 J
SHA-1
Arquivo entrada2
Tempo entre execuções 0,16 s
Tempo por execução 0,05 s
Variação de Voltagem 0,96 V
Potência Média durante 30,90 W
execução
Consumo 1,55 J
SHA-1
Arquivo Money.mp3
Tempo entre execuções 0,2 s
Tempo por execução 0,13 s
Variação de Voltagem 1,6 V
Potência Média durante 48,43 W
execução
Consumo 6,30 J
SHA-1
Arquivo vídeo.MPG
Tempo entre execuções 0,25 s
Tempo por execução 1,25 s
Variação de Voltagem 1,68 V
Potência Média durante 50,45 W
execução
Consumo 63,06 J
47. 3.4.2. Algoritmo Blowfish
Para o algoritmo Blowfish foi observado um pequeno aumento da potência
média usada pelo processador com o aumento do tamanho da entrada, porém essa
diferença não supera 10% do valor médio, que é de 50W de potência.
O consumo por byte medido para os processos de encriptação e decriptação,
inclusive para diferentes chaves, apresentam valores muito próximos, em média 9,25 µJ
por byte.
Para os testes com o algoritmo Blowfish foram feitos os mesmos processos
utilizados para o algoritmo SHA-1. As Figuras e Tabelas semelhantes às apresentadas
para o algoritmo SHA-1 são classificadas por categoria na Tabela 3.16.
Tabela 3.16. Guia para as figuras e tabelas com os resultados dos testes com o algoritmo
Blowfish.
Chave Processo Figura Tabela
Encriptação 3.5 3.17
Chave1 – 32 bits
Decriptação 3.6 3.18
Encriptação 3.7 3.19
Chave2 – 256 bits
Decriptação 3.8 3.20
Encriptação 3.9 3.21
Chave3 – 448 bits
Decriptação 3.10 3.22
48. (a) (b)
(c) (d)
Figura 3.5. Gráficos da variação da voltagem ao executar uma encriptação com o
algoritmo Blowfish usando chave de 32 bits para as entradas: (a) entrada1, (b)
entrada2, (c) Money.mp3 e (d) vídeo.MPG.
(a) (b)
(c) (d)
Figura 3.6. Gráficos da variação da voltagem ao executar uma decriptação com o
algoritmo Blowfish usando chave de 32 bits para as entradas: (a) entrada1, (b)
entrada2, (c) Money.mp3 e (d) vídeo.MPG.