SlideShare una empresa de Scribd logo
1 de 77
Descargar para leer sin conexión
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
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
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.
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
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.
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.
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.
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
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
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
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.
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
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.
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
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
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.
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.
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
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
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:
• 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;
• 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.
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
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.
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
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
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
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.
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.
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.      ܶ݁݉‫ݑܿ݁ݔ݁	ݎ݋݌	݋݌‬çã‫	 = 	݋‬            ொ௨௔௡௧௜ௗ௔ௗ௘	ௗ௘	௘௫௘௖௨çõ௘௦
஼௢௡௦௨௠௢	ௗ௔	௕௔௧௘௥௜௔	௧௢௧௔௟	(஺௛)
         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
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
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.
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.
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
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
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.
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
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.
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.
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.
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.
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.
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
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.
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
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
(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.
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench
Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench

Más contenido relacionado

Similar a Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench

Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de software
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de softwareAplicação de Padrões de Projeto para a melhoria da manutenabilidade de software
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de softwareCesar Rocha
 
Ferramentas de Recomendação - Detalhe
Ferramentas de Recomendação - DetalheFerramentas de Recomendação - Detalhe
Ferramentas de Recomendação - DetalheJoao Alqueres
 
Dissertacao Capacidade Multivariada
Dissertacao Capacidade MultivariadaDissertacao Capacidade Multivariada
Dissertacao Capacidade Multivariadaaryas
 
T.C.C. Aplicativo em NCL e simulação de colisão e explosão de satélite arti...
T.C.C.   Aplicativo em NCL e simulação de colisão e explosão de satélite arti...T.C.C.   Aplicativo em NCL e simulação de colisão e explosão de satélite arti...
T.C.C. Aplicativo em NCL e simulação de colisão e explosão de satélite arti...Jeferson Machado
 
Impressora 3D no ensino de Física.pdf
Impressora 3D no ensino de Física.pdfImpressora 3D no ensino de Física.pdf
Impressora 3D no ensino de Física.pdfIgoHenrique1
 
Rodolpho barbosa moreira (3)
Rodolpho barbosa moreira (3)Rodolpho barbosa moreira (3)
Rodolpho barbosa moreira (3)Emisael Braulio
 
Aplicação de um modelo simplificado das metodologias do pentesting
Aplicação de um modelo simplificado das metodologias do pentestingAplicação de um modelo simplificado das metodologias do pentesting
Aplicação de um modelo simplificado das metodologias do pentestingVitor Melo
 
Manual de engenharia_fv_2004[1] copy
Manual de engenharia_fv_2004[1] copyManual de engenharia_fv_2004[1] copy
Manual de engenharia_fv_2004[1] copyPedro Paulo Alves
 
pdfslide.net_modelo-termodinmico-para-o-forno-waelz.pdf
pdfslide.net_modelo-termodinmico-para-o-forno-waelz.pdfpdfslide.net_modelo-termodinmico-para-o-forno-waelz.pdf
pdfslide.net_modelo-termodinmico-para-o-forno-waelz.pdfLuan Bici
 
UMA METODOLOGIA PARA O PLANEJAMENTO DA EXPANSÃO DO SISTEMA ELÉTRICO BRASILEIR...
UMA METODOLOGIA PARA O PLANEJAMENTO DA EXPANSÃO DO SISTEMA ELÉTRICO BRASILEIR...UMA METODOLOGIA PARA O PLANEJAMENTO DA EXPANSÃO DO SISTEMA ELÉTRICO BRASILEIR...
UMA METODOLOGIA PARA O PLANEJAMENTO DA EXPANSÃO DO SISTEMA ELÉTRICO BRASILEIR...Cláudio Siervi
 
TCC_ConstruçãoPaineisEPS_Kevin_Genol.pdf
TCC_ConstruçãoPaineisEPS_Kevin_Genol.pdfTCC_ConstruçãoPaineisEPS_Kevin_Genol.pdf
TCC_ConstruçãoPaineisEPS_Kevin_Genol.pdfNataniel Fernandes
 
Algor genetico
Algor geneticoAlgor genetico
Algor geneticotiojoffre
 
TCC: Internet Via Rede Elétrica
TCC: Internet Via Rede ElétricaTCC: Internet Via Rede Elétrica
TCC: Internet Via Rede ElétricaJoão Sérgio
 
Métricas para estimativa de esforço em projetos de teste de software
Métricas para estimativa de esforço em projetos de teste de softwareMétricas para estimativa de esforço em projetos de teste de software
Métricas para estimativa de esforço em projetos de teste de softwareSamanta Cicilia
 
DISSERTAÇÃO Wilson Flávio Rodrigues.pdf
DISSERTAÇÃO Wilson Flávio Rodrigues.pdfDISSERTAÇÃO Wilson Flávio Rodrigues.pdf
DISSERTAÇÃO Wilson Flávio Rodrigues.pdfDanieliPerch
 
Sistemas de aterramento em baixa tensão
Sistemas de aterramento em baixa tensãoSistemas de aterramento em baixa tensão
Sistemas de aterramento em baixa tensãoJeane Silva
 

Similar a Estudo e medicao do consumo de energia de algoritmos criptograficos do mi bench (20)

Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de software
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de softwareAplicação de Padrões de Projeto para a melhoria da manutenabilidade de software
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de software
 
Ferramentas de Recomendação - Detalhe
Ferramentas de Recomendação - DetalheFerramentas de Recomendação - Detalhe
Ferramentas de Recomendação - Detalhe
 
4452
44524452
4452
 
Dissertacao Capacidade Multivariada
Dissertacao Capacidade MultivariadaDissertacao Capacidade Multivariada
Dissertacao Capacidade Multivariada
 
T.C.C. Aplicativo em NCL e simulação de colisão e explosão de satélite arti...
T.C.C.   Aplicativo em NCL e simulação de colisão e explosão de satélite arti...T.C.C.   Aplicativo em NCL e simulação de colisão e explosão de satélite arti...
T.C.C. Aplicativo em NCL e simulação de colisão e explosão de satélite arti...
 
Impressora 3D no ensino de Física.pdf
Impressora 3D no ensino de Física.pdfImpressora 3D no ensino de Física.pdf
Impressora 3D no ensino de Física.pdf
 
Rodolpho barbosa moreira (3)
Rodolpho barbosa moreira (3)Rodolpho barbosa moreira (3)
Rodolpho barbosa moreira (3)
 
Monopoli10010700
Monopoli10010700Monopoli10010700
Monopoli10010700
 
000741568
000741568000741568
000741568
 
DissertacaoBechara
DissertacaoBecharaDissertacaoBechara
DissertacaoBechara
 
Aplicação de um modelo simplificado das metodologias do pentesting
Aplicação de um modelo simplificado das metodologias do pentestingAplicação de um modelo simplificado das metodologias do pentesting
Aplicação de um modelo simplificado das metodologias do pentesting
 
Manual de engenharia_fv_2004[1] copy
Manual de engenharia_fv_2004[1] copyManual de engenharia_fv_2004[1] copy
Manual de engenharia_fv_2004[1] copy
 
pdfslide.net_modelo-termodinmico-para-o-forno-waelz.pdf
pdfslide.net_modelo-termodinmico-para-o-forno-waelz.pdfpdfslide.net_modelo-termodinmico-para-o-forno-waelz.pdf
pdfslide.net_modelo-termodinmico-para-o-forno-waelz.pdf
 
UMA METODOLOGIA PARA O PLANEJAMENTO DA EXPANSÃO DO SISTEMA ELÉTRICO BRASILEIR...
UMA METODOLOGIA PARA O PLANEJAMENTO DA EXPANSÃO DO SISTEMA ELÉTRICO BRASILEIR...UMA METODOLOGIA PARA O PLANEJAMENTO DA EXPANSÃO DO SISTEMA ELÉTRICO BRASILEIR...
UMA METODOLOGIA PARA O PLANEJAMENTO DA EXPANSÃO DO SISTEMA ELÉTRICO BRASILEIR...
 
TCC_ConstruçãoPaineisEPS_Kevin_Genol.pdf
TCC_ConstruçãoPaineisEPS_Kevin_Genol.pdfTCC_ConstruçãoPaineisEPS_Kevin_Genol.pdf
TCC_ConstruçãoPaineisEPS_Kevin_Genol.pdf
 
Algor genetico
Algor geneticoAlgor genetico
Algor genetico
 
TCC: Internet Via Rede Elétrica
TCC: Internet Via Rede ElétricaTCC: Internet Via Rede Elétrica
TCC: Internet Via Rede Elétrica
 
Métricas para estimativa de esforço em projetos de teste de software
Métricas para estimativa de esforço em projetos de teste de softwareMétricas para estimativa de esforço em projetos de teste de software
Métricas para estimativa de esforço em projetos de teste de software
 
DISSERTAÇÃO Wilson Flávio Rodrigues.pdf
DISSERTAÇÃO Wilson Flávio Rodrigues.pdfDISSERTAÇÃO Wilson Flávio Rodrigues.pdf
DISSERTAÇÃO Wilson Flávio Rodrigues.pdf
 
Sistemas de aterramento em baixa tensão
Sistemas de aterramento em baixa tensãoSistemas de aterramento em baixa tensão
Sistemas de aterramento em baixa tensão
 

Más de Edward David Moreno

Criptografia em hardware emicro se - nov 15 2012
Criptografia em hardware   emicro se - nov 15 2012Criptografia em hardware   emicro se - nov 15 2012
Criptografia em hardware emicro se - nov 15 2012Edward David Moreno
 
Implementacao e desempenho da virtualizacao no dcomp ufs
Implementacao e desempenho da virtualizacao no dcomp ufsImplementacao e desempenho da virtualizacao no dcomp ufs
Implementacao e desempenho da virtualizacao no dcomp ufsEdward David Moreno
 
Livro - Projeto, Desempenho e Aplicacoes de Sistemas Digitais em FPGAs
Livro - Projeto, Desempenho e Aplicacoes de Sistemas Digitais em FPGAsLivro - Projeto, Desempenho e Aplicacoes de Sistemas Digitais em FPGAs
Livro - Projeto, Desempenho e Aplicacoes de Sistemas Digitais em FPGAsEdward David Moreno
 
Implementacao e teste de sistemas criptograficos
Implementacao e teste de sistemas criptograficosImplementacao e teste de sistemas criptograficos
Implementacao e teste de sistemas criptograficosEdward David Moreno
 
Oportunidades para inovaçao e empreendedorismo em computacao
Oportunidades para inovaçao e empreendedorismo em computacaoOportunidades para inovaçao e empreendedorismo em computacao
Oportunidades para inovaçao e empreendedorismo em computacaoEdward David Moreno
 

Más de Edward David Moreno (6)

Criptografia em hardware emicro se - nov 15 2012
Criptografia em hardware   emicro se - nov 15 2012Criptografia em hardware   emicro se - nov 15 2012
Criptografia em hardware emicro se - nov 15 2012
 
Jai2008 energia-capitulo
Jai2008 energia-capituloJai2008 energia-capitulo
Jai2008 energia-capitulo
 
Implementacao e desempenho da virtualizacao no dcomp ufs
Implementacao e desempenho da virtualizacao no dcomp ufsImplementacao e desempenho da virtualizacao no dcomp ufs
Implementacao e desempenho da virtualizacao no dcomp ufs
 
Livro - Projeto, Desempenho e Aplicacoes de Sistemas Digitais em FPGAs
Livro - Projeto, Desempenho e Aplicacoes de Sistemas Digitais em FPGAsLivro - Projeto, Desempenho e Aplicacoes de Sistemas Digitais em FPGAs
Livro - Projeto, Desempenho e Aplicacoes de Sistemas Digitais em FPGAs
 
Implementacao e teste de sistemas criptograficos
Implementacao e teste de sistemas criptograficosImplementacao e teste de sistemas criptograficos
Implementacao e teste de sistemas criptograficos
 
Oportunidades para inovaçao e empreendedorismo em computacao
Oportunidades para inovaçao e empreendedorismo em computacaoOportunidades para inovaçao e empreendedorismo em computacao
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.