Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Dedicatória           Agradeço à minha familia pelo apoio, incentivo e compreensão nos   momentos de ausência e, em especi...
Agradecimentos  A DEUS pois, sem Ele, não estaríamos aqui e não fariamos nada daquilo que  fazemos.  À Mantenedora do UNIV...
Sobre os autores  Edward David Moreno é professor Doutor no UNIVEM (Centro Universitário  Eurípides de Marília), e atua ta...
Rodolfo Barros Chiaramonte é bacharel em Ciência da Computação peloUNIVEM. Atualmente mestrando na mesma instituição, no p...
Prefácio      Objetivos:      •   Apresentar os principais algoritmos de criptografia utilizados na área de          segur...
Parte III: Algoritmos Modernos de CriptografiaParte IV: Ferramentas e Dispositivos Modernos de SegurançaEm termos gerais, ...
Engenheiros e profissionais atuando na área de segurança de dados e da tecnologiada informação, com interesse em programaç...
Parte IConceitos Básicos de Criptografia, Software eHardware   A primeira parte divide-se em cinco capítulos, e é é feita ...
Capítulo 1Conceitos de Segurança de Dados e Criptografia    Neste primeiro capítulo, Conceitos de Segurança de Dados e Cri...
1.1.1 Uma Breve História da Criptografia   A criptografia é tão antiga quanto a própria escrita, já estava presente no sis...
1976 - A IBM apresenta a cifra Lucifer ao NBS (National Bureau of Standards) oqual, após avaliar o algoritmo com a ajuda d...
1998 - O código DES é quebrado em 56 horas por pesquisadores do Vale do Silício   (DESKEY, 2001).   1999 - O DES é quebrad...
de pesquisas e arquivos pessoais são informações valiosas que caso alguma empresaconcorrente tiver acesso de forma indevid...
Figura 1.2 – Configuração da permissão de acesso a uma pasta no Windows 2000.Ataque contra senhas: Vários sistemas operaci...
desviam do SO e capturam os bits brutos, reconstituindo-os em arquivos originais,   burlando os controles de permissão do ...
que é única. Na figura 1.3 tem-se a ilustração do esquema geral de cifragemutilizando chave.                  Figura 1.3 –...
1.1.4 Algoritmos de Bloco e Fluxo   Pode-se classificar os algoritmos de criptografia através tratamento dado as   informa...
Cifragem        Aplicação                                             Comentários                         Recomendada     ...
1.2 Importância da Chave ou “senha”   O termo “chave” vem do fato de que o número secreto, a famosa senha usada nos   nos ...
um algoritmo. Além disso, se utilizar chaves para proteger os segredos, é possívelutilizar diferentes chaves para proteger...
alunos graduados da Universidade da Califórnia em Berkeley, abriram um telefone    celular digital, supostamente seguro, e...
alfanuméricos (letras e símbolos especiais) contanto que tenha um tamanho correto e    adequado àquele que o algoritmo cri...
Um algoritmo simplesmente realiza os passos, independentemente da entrada. Elenão tem nenhuma maneira de saber se o result...
Nessa tabela, o termo 2s significa 2 segundos; 200ms siginifica que o tempo é dadoem milisegundos (10-3 segundos); 200 us ...
Pode-se pensar em situações ainda mais críticas. Suponha que examinar 1% doespaço de chave de uma chave de 56 bits leva 1 ...
altamente improvável que a tecnologia vá tão longe para forçar a utilizar chaves que   sejam “muito grandes” (BURNETT, 200...
Figura 1.4 – Modelo simétrico e assimétrico de criptografia.Após analisar o exposto acima, pode-se ficar em dúvida de qual...
conhecido em transações via WEB e hoje domina esse mercado, estando presenteprincipalmente em vendas on-line envolvendo ca...
Algoritmo              Tipo        Tamanho Chave        Tamanho Bloco                       DES                Bloco      ...
Figura 1.5 – Geração de Assinatura Digital de um documento (BURNETT, 2002).Nesta figura um usuário de nome Fábio assina um...
A tabela 1.6 mostra as características dos algoritmos de hashing mais conhecidos   pela comunidade da área de segurança de...
•   Ainda existe um sentimento de insegurança quando se realiza alguma       transação comercial via internet, fazendo com...
Capítulo 2Conceitos de Circuitos Programáveis FPGAs eVHDL e VHDL   Neste capítulo, apresentam-se conceitos básicos de circ...
Figura 2.1 – Arquiteturas interna de circuitos programáveis FPGA.A arquitetura sea-of-gates é um circuito composto por tra...
Figura 2.2 – Dispositivos internos de um FPGA.   Já a figura 2.2 mostra que um FPGA (Field Programmable Gate Arrays) são  ...
Acoplando um dispositivo programável FPGA a um processador de propósito geral   (GPP), torna-se possível a exploração efic...
A forma comportamental consiste em descrever o circuito pensando no seu    comportamento e funcionamento e não na sua estr...
Comparador de 1 Bit (Descrição Algorítmica)    -- definição da entidade: portas de E/S    entity comp is    port (e1,e2: i...
Para descrever um circuito na forma estrutural, deve-se conhecer seus componentes   e interconexões. Em sistemas onde não ...
ABS             CONFIGURATION         INOUT        OR             THEN      ACCESS          CONSTANT              IS      ...
= ou /= O primeiro indica true, se os operandos forem iguais e false se forem    diferentes. O segundo funciona justamente...
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Livro - criptografia em hardware e software - isbn 85-7522-069-1
Upcoming SlideShare
Loading in …5
×

Livro - criptografia em hardware e software - isbn 85-7522-069-1

18,431 views

Published on

Livro com ISBN 85-7522-069-1 pela editora Novatec

Published in: Technology

Livro - criptografia em hardware e software - isbn 85-7522-069-1

  1. 1. Dedicatória Agradeço à minha familia pelo apoio, incentivo e compreensão nos momentos de ausência e, em especial, por terem sempre paciência e muito amor. À minha familia da Colômbia por seu eterno amor. Edward Dedico este livro à minha esposa Ednéia, e ao meu filho, Pedro Luís, que iluminam o meu caminho. Aos meus pais que sempre me apoiaram, e aos meus amigos, que sempre me incentivaram em todos os sentidos. Fábio Ofereço este livro aos meus pais Alcides e Marta, e à minha irmã Josiane, que sempre estiveram ao meu lado, apoiando-me e incentivando. Aos meus familiares pela compreensão e atenção em todos os momentos. Rodolfo 3
  2. 2. Agradecimentos A DEUS pois, sem Ele, não estaríamos aqui e não fariamos nada daquilo que fazemos. À Mantenedora do UNIVEM, Fundação de Ensino Eurípides Soares da Rocha, pelo comprometimento com a educação de ensino superior, formando profissionais com excelência acadêmica e responsabilidade social, e principalmente, por oferecer condições acadêmicas integradas à realização de pesquisas, pois entendem que é um dos caminhos para se alcançar excelência acadêmica, universitária e profissional. Aos amigos e colegas do UNIVEM (Centro Universitário Eurípides de Marília, S.P.) que trabalham no LAS – Laboratório de Arquitetura e Sistemas Computacionais. Em especial a Cesar Giacomini Penteado e Rodrigo de Almeida Pericini que dividiram momentos de dificuldade e sucesso nos projetos e na vida. Aos amigos Paulo Henrique Trecenti, Luis Fernando Ruivo Gatti, Eduardo Elias Laíno de Oliveira, Thiago Albuquerque Pinto; cujos trabalhos de Conclusão de curso apresentado no curso de Bacharelado em Ciência da Computação do UNIVEM auxiliaram e, muito, a realização deste livro. Aos profissionais da área de computação e informática: Emiliano da Silva Alves, Vivian Patricia Mascarin e Everson Luiz Vilela Tescaro, que fizeram a sua especialização em engenharia de software, nos cursos lato-sensu do UNIVEM. Aos alunos do Mestrado em Ciência da Computação e alunos da especialização em redes de computadores e segurança da informação do UNIVEM. A todas as outras pessoas que, mesmo não citadas aqui, deram muito apoio e incentivo, que, sem os quais, esse livro não chegaria à sua conclusão. 4
  3. 3. Sobre os autores Edward David Moreno é professor Doutor no UNIVEM (Centro Universitário Eurípides de Marília), e atua tanto no programa de mestrado stricto-sensu em ciência da computação quanto no curso de BCC (Bacharelado em Ciência da Computação). Também é Professor credenciado no programa de Pós-graduação da Universidade de São Paulo (USP, São Paulo) e membro do grupo HPCAC (High Performance Computer Architecture and Communications) da POLI-USP. O Prof. Moreno finalizou seu Pós-Doutorado na UFSCar (Universidade Federal de São Carlos), São Carlos/SP, 2000 na área de Aplicações em Computação de Alto Desempenho, o seu Doutorado em Eng. Elétrica/POLI-USP, 1998 na área de Computação de Alto Desempenho e Arquiteturas Avançadas de Computador e o seu Mestrado em Eng. Elétrica/POLI-USP, 1994 na área de Arquitetura de Computadores. Finalmente, a Graduação foi em Eng. Elétrica/Universidad del Valle, Cali,Colômbia,1991, com o projeto de Microcontroladores em Gate Arrays CMOS. No ano de 1999, fez uma especialização em Gestão de Projetos, na PUC- Paraná. As áreas de interesse do Prof. Moreno são: Arquitetura de Computadores, Computação de Alto Desempenho, Avaliação de Desempenho, Computação Reconfigurável e Prototipação de Sistemas Digitais. O Prof. Moreno tem escrito e publicado, como autor principal e co-autor, aproximadamente 100 artigos em eventos nacionais e internacionais. Experiência internacional trabalhando como pesquisador convidado em projetos tais como “NUMAchine Multiprocessor” desenvolvido na universidade de Toronto, Canadá, e no projeto “Large Databases for Multiprocessors” desenvolvido em Chalmers University of Technology, Gotebörg, Suécia. Ele participa ativamente na comunidade internacional, tendo já colaborado como membro de comitê de programa em aproximadamente 50 eventos de renome internacional. Fábio Dacêncio Pereira é bacharel e Mestre em Ciência da Computação pelo UNIVEM (Centro Universitário Eurípides de Marília). O projeto do mestrado foi na área de processadores para Segurança. Foi monitor do Laboratório de Arquitetura e Sistemas Computacionais (LAS) e Bolsista de IC da FAPESP (Fundação de Amparo à Pesquisa do Estado de São Paulo), no período de Agosto 2000 a Dezembro 2002, e bolsista CAPES no ano de 2004. Atualmente professor do UNIVEM. As áreas de interesse são: Circuitos e Sistemas Digitais em FPGAs, Avaliacao de Desempenho e Projeto de Processadores em FPGAs. Tem publicado alguns trabalhos em eventos nacionais e internacionais na área com ênfase no livro recente: Projeto, Implementação e Desempenho de Sistemas Digitais em FPGAs. 5
  4. 4. Rodolfo Barros Chiaramonte é bacharel em Ciência da Computação peloUNIVEM. Atualmente mestrando na mesma instituição, no projeto “SistemasInteligentes de Segurança”, com bolsa da CAPES. O Rodolfo foi monitor doLaboratório de Realidade Virtual (LRV) do UNIVEM e Bolsista de IniciaçãoCientífica, durante 3 anos, da FAPESP (Fundação de Amparo à Pesquisa do Estadode São Paulo), no período de Março 2001 a Dezembro 2003. As áreas de interessesão: Segurança de dados, Algoritmos de Criptografia, Circuitos e Sistemas Digitaisem FPGAs, Avaliação de Desempenho. Tem publicado alguns trabalhos em eventosnacionais na área de criptografia e segurança da informação. Além disso, temparticipado em algumas palestras e workshops sobre os assuntos acimamencionados. 6
  5. 5. Prefácio Objetivos: • Apresentar os principais algoritmos de criptografia utilizados na área de segurança e respectiva implementação em software (linguagem C e Java) e hardware (VHDL e FPGAs); • Explicar alguns códigos em C, enfatizando nas similaridades e diferenças de se programar usando linguagem C e VHDL (amplamente usada em projetos de hardware); • Comparar o desempenho desses algoritmos, tanto na implementação em software quanto em hardware. A análise comparativa é realizada através de parâmetros tais como: desempenho (velocidade, utilização de memória, impacto provocado pelo tamanho das chaves, etc.), nível de segurança, flexibilidade e facilidade de implementação e utilização; • Mostrar a importância da criptografia implementada em hardware (usando-se de circuitos programáveis tais como FPGAs e equipamentos modernos tais como HSM e Smart Cards); • Facilitar o aprendizado de segurança da informação usando-se de algoritmos de criptografia e a existência de algumas bibliotecas tais como CryptoAPI, JCA, OpenSSL e JCA; • Motivar o aprendizado de projeto de sistemas digitais próprios da área de segurança de dados, usando-se de técnicas de prototipação rápida de sistemas de segurança em hardware. Dessa maneira, o livro oferece ao leitor uma ferramenta de aprendizagem sobre os diferentes algoritmos de criptografia atualmente utilizados, enfatizando em aspectos de desempenho, a qual está amplamente relacionada com a forma de implementação. O livro ensina os aspectos teóricos, relacionando-os com a parte prática (implementação e utilização), e pode ser lido tanto por iniciantes quanto por profissionais e acadêmicos que queiram se aprofundar mais no assunto. Resumo: O texto está composto de 17 capítulos, organizados em quatro partes: Parte I: Conceitos Básicos de Segurança, Software e Hardware Parte II: Algoritmos Clássicos de Criptografia 7
  6. 6. Parte III: Algoritmos Modernos de CriptografiaParte IV: Ferramentas e Dispositivos Modernos de SegurançaEm termos gerais, a proposta do livro apresenta de maneira clara os principaisalgoritmos de criptografia (tanto simétricos e assimétricos), explicando de maneirasimples o respectivo funcionamento, sem necessidade de aprofundamentos nosconceitos matemáticos.O livro destaca a implementação de alguns algoritmos de criptografia utilizandoprincipalmente a linguagem C, assim como, a liguagem JAVA e VHDL, enfatizandoa analise de desempenho de cada algoritmo, permitindo que o leitor saiba quando umalgoritmo é melhor do que outro e porque. Isto é, apresenta, pela primeira vez,detalhes de performance (desempenho) desses algoritmos. Além de apresentar osníveis de segurança e aplicações, apresenta-se a velocidade com que cada algoritmopode executar para diferentes tipos de arquivos de diferentes aplicações.Mais uma grande diferença, é a apresentação das potencialidades oferecidas porimplementações em hardware desses algoritmos. Assim, ele apresenta uma novatécnica de projetar sistemas digitais em uma tecnologia moderna chamada decircuitos programáveis (FPGAs). Para isso se mostram os conceitos da linguagemprópria para hardware (VHDL) e como se projetam esses circuitos específicos decriptografia a partir das respectivas implementações em software (a maioria emlinguagem C e alguns outros algoritmos em Java). Finalmente, se faz umacomparação entre as respectivas implementações em Software e Hardware.Finalmente, no último capítulo, o décimo sétimo (17) se oferecem informações deuma ferramenta, chamada pelos autores de WEBCRY, e se disponibiliza um site naInternet com algumas informações públicas para que os leitores se atualizem arespeito dos algoritmos discutidos no livro, assim como a possibilidade de acessaralguns códigos e exemplos fornecidos no livro e a utilização da ferramentaWEBCRY criada pelos autores. Dessa maneira, os leitores e usuários podemexercitar a parte prática do livro e vivenciar por si mesmos os conhecimentos,experiências, resultados e os efeitos de desempenho desses algoritmos.Público alvo:Estudantes e Professores da área da Computação e Informática (tais como Ciência daComputação, Sistemas de Informação, Engenharia da Computação, EngenhariaElétrica, Engenharia Eletrônica), interessados em adquirir e aprofundar osconhecimentos na área de segurança, do ponto de vista de algoritmos, sistemasdigitais e desempenho.Profissionais que estejam realizando pós graduação lato sensu ou stricto sensu, nasáreas de segurança de dados e da informação. 8
  7. 7. Engenheiros e profissionais atuando na área de segurança de dados e da tecnologiada informação, com interesse em programação, no projeto de circuitos e sistemasdigitais, e principalmente, no desempenho de sistemas de segurança.Informações adicionais, tais como códigos da maioria dos algoritmos apresentadosno livro podem ser acessados no linkhttp://www.novateceditora.com.br/downloads.php, assim como detalhes daferramenta WEBCRY. 9
  8. 8. Parte IConceitos Básicos de Criptografia, Software eHardware A primeira parte divide-se em cinco capítulos, e é é feita uma introdução sobre o que será abordado no livro, como ele está estruturado e como pode ser lido. Este capítulo apresenta o assunto e motiva a necessidade do estudo de VHDL e a possível inserção de FPGAs como alternativa de projeto de circuitos e sistemas digitais, enfatiza principalmente os aspectos de implementação e desempenho de algoritmos de criptografia tanto em software quanto em hardware. Apresenta um algoritmo de criptografia, criado pelos autores e denominado de ALPOS, o qual visa, fundamentalmente, mostrar aos leitores com pouca experiência na área, como é possível criar soluções criptográficas. Esse algoritmo não é muito seguro, mas é uma versão didática que facilita o entendimento de vários conceitos relacionados à segurnaça de dados. 10
  9. 9. Capítulo 1Conceitos de Segurança de Dados e Criptografia Neste primeiro capítulo, Conceitos de Segurança de Dados e Criptografia, se apresenta e enfatiza a necessidade da segurança de dados nos tempos modernos, focalizando principalmente o papel dos algoritmos de criptografia e as vantagens de se ter conhecimento dos conceitos, implementação e, principalmente, do seu desempenho.1.1 A Criptografia A criptografia pode ser entendida como um conjunto de métodos e técnicas para cifrar ou codificar informações legíveis através de um algoritmo, convertendo um texto original em um texto ilegível, sendo possível através do processo inverso recuperar as informações originais (SIMON, 1999), ver processo na figura 1.1. Figura 1.1 – Esquema geral para cifragem de um texto. Pode-se criptografar informações basicamente através de códigos ou de cifras. Os códigos protegem as informações trocando partes da informação por códigos predefinidos. Sendo que todas as pessoas autorizadas a ter acesso à uma determinada informação devem conhecer os códigos utilizados. As cifras são técnicas nas quais a informação é cifrada através da transposição e/ou substituição das letras da mensagem original. Assim, as pessoas autorizadas podem ter acesso às informações originais conhecendo o processo de cifragem. As cifras incluem o conceito de chaves, que será apresentado em outra seção. Os principais tipos de cifra são: as cifras de transposição que é a mistura dos caracteres da informação original. Por exemplo, pode-se cifrar a palavra "CRIPTOGRAFIA" e escrevê-la "RPORFACITGAI"; e as cifras de substituição que através de uma tabela de substituição predefinida é possível trocar ou substituir um caractere ou caracteres de uma informação. 11
  10. 10. 1.1.1 Uma Breve História da Criptografia A criptografia é tão antiga quanto a própria escrita, já estava presente no sistema de escrita hieroglífica dos egípcios. Os romanos utilizavam códigos secretos para comunicar planos de batalha. Com as guerras mundiais e a invenção do computador, a criptografia cresceu incorporando complexos algoritmos matemáticos. A criptologia faz parte da história humana porque sempre houve fórmulas secretas e informações confidenciais que não deveriam cair no domínio público ou na mão de inimigos. Segundo Kahn (1967), o primeiro exemplo documentado da escrita cifrada aconteceu aproximadamente no ano de 1900 a.C, quando o escriba de Khnumhotep II teve a idéia de substituir algumas palavras ou trechos de texto. Caso o documento fosse roubado, o ladrão não encontraria o caminho que o levaria ao tesouro e morreria de fome perdido nas catacumbas da pirâmide. Em 50 a.C, Júlio César usou sua famosa cifra de substituição para cifrar (criptografar) comunicações governamentais. Para compor seu texto cifrado, César alterou letras desviando-as em três posições; A se tornava D, B se tornava E, e etc. Às vezes, César reforçava seu método de criptografar mensagens substituindo letras latinas por gregas. O código de César é o único da antigüidade que é usado até hoje. Atualmente qualquer cifra baseada na substituição cíclica do alfabeto denomina-se de código de César. Apesar da sua simplicidade (ou exatamente devido a ela), esta cifra foi utilizada pelos oficiais sulistas na Guerra de Secessão americana e pelo exército russo em 1915. Em 1901, iniciou-se a era da comunicação sem fio. Apesar da vantagem de uma comunicação de longa distância sem o uso de fios ou cabos, o sistema é aberto e aumenta o desafio da criptologia. Em 1921, Edward Hugh Hebern funda a Hebern Electric Code, uma empresa produtora de máquinas de cifragem eletro-mecânicas baseadas em rotores que giram a cada caracter cifrado (TKOTZ, 2003). Entre 1933 e 1945, a máquina Enigma que havia sido criada por Arthur Scherbius foi aperfeiçoada até se transformar na ferramenta criptográfica mais importante da Alemanha nazista. O sistema foi quebrado pelo matemático polonês Marian Rejewski que se baseou apenas em textos cifrados interceptados e numa lista de chaves obtidas através de um espião (KAHN, 1967). A seguir, outros acontecimentos relacionados à utilização da criptografia (TKOTZ, 2003): 1943 - Máquina Colossus projetada para quebrar códigos. 1969 - James Ellis desenvolve um sistema de chaves públicas e chaves privadas separadas. 1976 – Diffie-Hellman é um algoritmo baseado no problema do logaritmo discreto, é o criptosistema de chave pública mais antigo ainda em uso. 12
  11. 11. 1976 - A IBM apresenta a cifra Lucifer ao NBS (National Bureau of Standards) oqual, após avaliar o algoritmo com a ajuda da NSA (National Security Agency),introduz algumas modificações (como as Caixas S e uma chave menor) e adota acifra como padrão de criptografia de dados nos EUA (FIPS46-3, 1999), conhecidohoje como DES (Data Encryption Standard). Hoje o NBS é chamado de NationalInstitute of Standards and Technology, NIST.1977 - Ronald L. Rivest, Adi Shamir e Leonard M. Adleman começaram a discutircomo criar um sistema de chave pública prático. Ron Rivest acabou tendo umagrande idéia e a submeteu à apreciação dos amigos: era uma cifra de chave pública,tanto para confidencialidade quanto para assinaturas digitais, baseada na dificuldadeda fatoração de números primos grandes. Foi batizada de RSA, de acordo com asprimeiras letras dos sobrenomes dos autores (TKOTZ, 2003).1978 - O algoritmo RSA é publicado na ACM (Association for ComputingMachinery), um dos melhores meios de divulgação de pesquisas científicas.Maiores detalhes desta organização podem ser obtidos no link www.acm.org.1990- Xuejia Lai e James Massey publicam na Suiça "A Proposal for a New BlockEncryption Standard" ("Uma Proposta para um Novo Padrão de Encriptação deBloco")(LAI, 1990), o assim chamado IDEA (International Data EncryptionAlgorithm), para substituir o DES. O algoritmo IDEA utiliza uma chave de 128 bitse emprega operações adequadas para computadores de uso geral, tornando asimplementações em software mais eficientes (SCHNEIER, 1996).1991- Phil Zimmermann torna pública sua primeira versão de PGP (Pretty GoodPrivacy) como resposta ao FBI, o qual invoca o direito de acessar qualquer textoclaro da comunicações entre usuários que se comunicam através de uma redecomunicação digital. O PGP oferece uma segurança alta para o cidadão comum e,como tal, pode ser encarado como um concorrente de produtos comerciais como oMailsafe da RSADSI. Entretanto, o PGP é especialmente notável porque foidisponibilizado como freeware e, como resultado, tornou-se um padrão mundialenquanto que seus concorrentes da época continuaram absolutamente desconhecidos(BROWN, 2000).1994- Novamente o professor Ronald L. Rivest, autor dos algoritmos RC2 e RC4incluídos na biblioteca de criptografia BSAFE do RSADSI, publica a proposta doalgoritmo RC5 na Internet. Este algoritmo usa rotação dependente de dados comosua operação não linear e é parametrizado de modo que o usuário possa variar otamanho do bloco, o número de estágios e o comprimento da chave.1994- O algoritmo Blowfish, uma cifra de bloco de 64 bits com uma chave de até448 bits de comprimento, é projetado por Bruce Schneier (SCHNEIER, 1993).1997- O PGP 5.0 Freeware é amplamente distribuído para uso não comercial.1997- O código DES de 56 bits é quebrado por uma rede de 14.000 computadores(CURTIN, 1998). 13
  12. 12. 1998 - O código DES é quebrado em 56 horas por pesquisadores do Vale do Silício (DESKEY, 2001). 1999 - O DES é quebrado em apenas 22 horas e 15 minutos, através da união da Electronic Frontier Foundation e a Distributed.Net, que reuniram em torno de 100.000 computadores pessoais ao DES Cracker pela Internet (MESERVE, 1999). 2000 - O NIST (National Institute of Standards and Technology) anunciou um novo padrão de uma chave secreta de cifragem, escolhido entre 15 candidatos. Este novo padrão foi criado para substituir o algoritmo DES, cujo tamanho das chaves tornou- se insuficientes para conter ataques de força bruta (MESERVE, 1999). O algoritmo Rijndael cujo o nome é uma abreviação dos nomes dos autores Rijmen e Daemen - foi escolhido para se tornar o futuro AES (Advanced Encryption Standard) (FIPS197, 2001). 2000 – 2004 – Muitos professores e profissionais da computação com vínculo em centros de pesquisa, universidades e empresas motivam-se e começam a pesquisar novas formas de implementar algoritmos e soluções de segurança. Surge assim, uma “onda” de pesquisas e desenvolvimentos voltados a realizar otimizações dessas primeiras implementações e uma dessas tendências é a implementação em hardware. Assim, este livro, mostra a importância de se implementar alguns desses algoritmos criptográficos em hardware, em especial, através do uso da tecnologia de circuitos programáveis (FPGAs), a qual é acessível e diminui de forma significativa os tempos e custos associados à realização de projetos e protótipos. Os computadores são a expressão maior da era digital, marcando presença em praticamente todas as atividades humanas. Da mesma forma com que revolucionaram a informação, também influenciaram na criptologia: por um lado ampliaram seus horizontes, por outro, tornaram a criptologia quase que indispensável. Na próxima seção apresenta-se a importância da criptografia.1.1.2 A Importância da Criptografia Nesta seção é discutida a importância da criptografia, a segurança dos sistemas operacionais e porque se deve utilizar este recurso contra intrusos que desejam acessar informações alheias. A segurança eletrônica nunca foi tão amplamente discutida: casos de violação de contas bancárias, acesso a informações sigilosas, invasão e destruição de sistemas são cada vez mais comuns. Informações são transmitidas com mais eficiência e velocidade, mas como se sabe, nem sempre de forma segura. A privacidade é importante para pessoas e para as empresas. Muitos problemas podem acontecer se uma pessoa não autorizada tiver acesso a dados pessoais como: contracheque, saldo bancário, faturas do cartão de crédito, diagnósticos de saúde e senhas bancárias ou de credito automático. No caso de empresas, os danos podem ser de maior magnitude, atingindo a organização e os próprios funcionários. Dados estratégicos da empresa, previsão de venda, detalhes técnicos de produtos, resultados 14
  13. 13. de pesquisas e arquivos pessoais são informações valiosas que caso alguma empresaconcorrente tiver acesso de forma indevida, pode acarretar em sérios problemas.A Internet é um ambiente que viabiliza principalmente a comunicação, a divulgação,a pesquisa e o comercio eletrônico. Em 1999 havia mais de 100 milhões de usuáriosda Internet nos Estados Unidos. No final de 2003 esse número alcançou 177 milhõesnos Estados Unidos e 502 milhões no mundo todo (BURNETT, 2002). O comércioeletrônico emergiu como um novo setor da economia norte-americana, sendoresponsável por cerca de U$100 bilhões em vendas durante 1999, em 2003 ocomércio eletrônico excedeu a U$1 trilhão. Ao mesmo tempo, o Computer SecurityInstitute (CSI) constatou um aumento de crimes cibernéticos, 55% dos entrevistadosna pesquisa informaram atividades maliciosas relacionadas com pessoas da própriaorganização. Ciente disso pode-se ter certeza que as empresas em expansão precisamde produtos, mecanismos e soluções de segurança (BURNETT, 2002).Não muito tempo atrás a segurança era uma questão de se trancar uma porta ou umcofre. Atualmente as informações geralmente não estão armazenadas somente empapéis e sim em banco de dados. Como proteger essas informações? O que ossistemas operacionais (SO) oferecem para essa proteção ?Os sistemas operacionais oferecem um sistema de proteção através de permissões(ver figura 1.2). Isto é, através do SO é possível criar usuários com diferentes níveisde acesso para as informações contidas em um computador. Tal acesso éimplementado via procedimento de login. Assim quando um determinado usuáriofazer login em um computador terá acesso às pastas e arquivos designados pelo seunível de permissão, isto é, se um usuário tiver restrições para o acesso de pasta,arquivos e programas, este não conseguirá acessar.Os cadastros de usuários e as permissões são concedidos pelo superusuário ouadministrador do sistema. Este é responsável pelo gerenciamento do sistema,inclusive pode permitir que outros usuários possam alterar algumas permissões,como de uma pasta pessoal. Independente das restrições impostas, com o login desuperusuário pode-se ter acesso a todas as funções do sistema.A questão é como o sistema operacional sabe que a pessoa que está acessando osistema é realmente o superusuário? O SO concede a permissão através de um nomede usuário e senha, normalmente os nomes de usuários administradores são “root”,“su” ou “administrador” e infelizmente sabe-se que as técnicas para superar essasdefesas são amplamente conhecidas (BURNETT, 2002). A seguir são descritosalguns dos principais ataques. 15
  14. 14. Figura 1.2 – Configuração da permissão de acesso a uma pasta no Windows 2000.Ataque contra senhas: Vários sistemas operacionais vêm com um nome de usuárioe senhas predefinidas e muitas vezes o mesmo login é utilizado para realizar váriastarefas como: criação de usuários, manutenção e backup, instalação de programasassim por diante.Não é uma boa prática utilizar o login predefinido. A utilização da senha predefinidaou de uma senha derivada de uma data de aniversário ou qualquer dado pessoal,pode facilitar o ataque ao sistema. Se o invasor não tiver a competência paradescobrir a senha, este poderá utilizar aplicativos, chamados de software de crackingde senha. Esses softwares testam exaustivamente as possibilidades de senhas atéencontrar uma válida, se a senha for fraca, em questão de minutos o invasor teráacesso ao sistema.Seria interessante dar preferência a diferentes senhas de superusuário para cadafunção do sistema, pois se o sistema for invadido, o intruso não terá acesso a todasas informações do sistema, mesmo acessando com um login de superusuário. Umaoutra maneira para invadir e recuperar os dados do sistema é desviando do controlede permissões do SO, chamado de ataque de recuperação de dados.Ataques de recuperação de dados: O sistema operacional organiza as informaçõesem arquivos e diretórios para que o usuário possa fazer um acesso rápido a umadeterminada informação. Contudo, os dados assim como o controle de acesso a essesdados são bits eletrônicos. Assim, é possível fazer uma leitura destes bits não comoarquivos de texto ou de números e sim como bits, independente do SO. Estes ataques 16
  15. 15. desviam do SO e capturam os bits brutos, reconstituindo-os em arquivos originais, burlando os controles de permissão do SO. Ataque de reconstrução de memória: Freqüentemente, o material sigiloso está armazenado na memória do computador. Quando executar um programa, este será armazenado em uma área da memória principal e o SO marca esta área como indisponível. Quando o programa é finalizado, o SO apenas disponibiliza a área sem sobrescrevê-la. O invasor simplesmente aloca a memória liberada e examina o que sobrou (BURNETT, 2002). Como impedir que um invasor tenha acesso a informações privadas? Para impedir o acesso a informação privada pode-se utilizar a proteção por criptografia. A proteção por criptografia é uma solução prática para proteger informações sigilosas, independente do algoritmo criptográfico utilizado sempre ocorrerá uma transformação de um texto legível em um ilegível. Mesmo que o invasor obtenha o conteúdo de um arquivo, este será ilegível. Para ter acesso à informação original, o invasor terá que resolver um problema matemático de difícil solução. A criptografia pode adicionar também maior segurança ao processo de identificação de pessoas, criando identidades digitais fortes. De modo algum a criptografia é a única ferramenta necessária para assegurar a segurança de dados, nem resolverá todos os problemas de segurança. É um instrumento entre vários outros. Além disso, a criptografia não é à prova de falhas. Toda criptografia pode ser quebrada e, sobretudo, se for implementada incorretamente, ela não agrega nenhuma segurança real (BURNETT, 2002).1.1.3 Alguns Termos utilizados na Criptografia Junto com o conceito de criptografia, tem-se alguns termos oficiais comumente utilizados, que são conceituados nesta seção. O ato de transformar um texto legível (texto claro, texto original, texto simples) em algo ilegível (cifra, texto cifrado, texto código) é chamado de “encriptar” (codificar, criptografar, cifrar). A transformação inversa é chamada de “decriptar” (decodificar, decriptografar, decifrar). O algoritmo de criptografia é uma seqüência de procedimentos que envolvem uma matemática capaz de cifrar e decifrar dados sigilosos. O algoritmo pode ser executado por um computador, por um hardware dedicado e por um humano. Em todas as situações o que diferencia é a velocidade de execução e a probabilidade de erros. Existem vários algoritmos de criptografia, neste livro apresenta-se especificamente o DES, AES, RC5, IDEA e RSA, MD5 e SHA-1, pois são os mais utilizados atualmente, além do ALPOS (um algoritmo didático criado pelos autores). Além do algoritmo, utiliza-se uma chave. A chave na criptografia computadorizada é um número ou um conjunto de números. A chave protege a informação cifrada. Para decrifrar o texto cifrado o algoritmo deve ser alimentado com a chave correta, 17
  16. 16. que é única. Na figura 1.3 tem-se a ilustração do esquema geral de cifragemutilizando chave. Figura 1.3 – Esquema geral de cifragem com chave.Na história da criptografia sempre ficou evidente que não existe um algoritmo quenão possa ser quebrado (descoberto ou solucionado). Com a criptografiacomputadorizada, atualmente, os algoritmos são divulgados à comunidade e o sigilodas informações é garantido apenas pela chave. Isto significa que se alguémdescobrir a chave para decifrar uma determinada informação, todas as outrasinformações cifradas com este algoritmo ainda estarão protegidas, por terem chavesdiferentes.Já um algoritmo criptográfico que não utiliza o recurso de chaves para cifrar asinformações pode levar a um efeito cascata perigoso. Se este algoritmo for quebrado,todas as informações cifradas com ele estarão desprotegidas, pois o que garante osigilo das informações seria o próprio algoritmo. Assim, toda criptografia moderna ecomputadorizada opera com chaves.A criptografia desde seu inicio, foi desenvolvida para impedir que um invasor ouintruso, alguém que está tentando acessar informações sigilosas tivesse sucesso. Hápouco tempo a criptografia era amplamente utilizada para proteger informaçõesmilitares. Atualmente protege uma gama maior de diferentes informações. Osinvasores não necessariamente só querem acessar informações sigilosas, mastambém desativar sites, excluir informações de uma pessoa ou empresa, danificarsistemas em geral.O estudo sobre a quebra de sistemas criptográficos é conhecido como análisecriptográfica. Semelhante ao invasor, o criptoanalista procura as fraquezas dosalgoritmos. O criptógrafo desenvolve sistemas de criptografia. É importante que acomunidade de criptografia conheça as fraquezas, pois os invasores também estãoprocurando por elas. É quase certo que os invasores não irão publicar suasdescobertas para o mundo (BURNETT, 2002). 18
  17. 17. 1.1.4 Algoritmos de Bloco e Fluxo Pode-se classificar os algoritmos de criptografia através tratamento dado as informações que serão processadas assim, tem-se os algoritmos de bloco e os algoritmos de fluxo. A cifra de blocos opera sobre blocos de dados. O texto antes de ser cifrado é dividido em blocos que variam normalmente de 8 a 16 bytes que serão cifrados ou decifrados. Quando o texto não completa o número de bytes de um bloco, este é preenchido com dados conhecidos (geralmente valor zero “0”) até completar o número de bytes do bloco, cujo tamanho já é predefinido pelo algoritmo sendo usado. A forma mais comum de preenchimento é determinar o número de bytes que deve ser preenchido e utilizar este valor para preencher o bloco. Por exemplo: Suponha que o tamanho do bloco em um determinado algoritmo seja de 16 bytes e foi utilizado apenas 9. Deve-se preencher os 7 bytes restantes com o valor 07. Um problema na cifra de bloco é que se o mesmo bloco de texto simples aparecer mais de uma vez, a cifra gerada será a mesma facilitando o ataque ao texto cifrado. Para resolver este problema são utilizados os modos de realimentação. O modo mais comum de realimentação é a cifragem de blocos por encadeamento (Cipher Block Chaining - CBC). Neste modo é realizada uma operação de XOR do bloco atual de texto simples com o bloco anterior de texto cifrado. Para o primeiro bloco não há bloco anterior de texto cifrado assim, faz-se uma XOR com um vetor de inicialização. Este modo não adiciona nenhuma segurança extra. Apenas evita o problema citado da cifra de bloco. Portanto, os algoritmos de blocos processam os dados como um conjunto de bits, são os mais rápidos e seguros para a comunicação digital. Tem ainda como vantagem que os blocos podem ser codificados fora de ordem, o que é bom para acesso aleatório, além de ser resistente a erros, uma vez que um bloco não depende do outro. Entretanto, possuem como desvantagem que se a mensagem possui padrões repetitivos nos blocos, o texto cifrado também o apresentará, o que facilita o serviço do criptoanalista. Outra desvantagem é que um bloco pode ser substituído por outro modificando a mensagem original. Os algoritmos de fluxo criptografam (cifram) a mensagem bit a bit, em um fluxo contínuo, sem esperar que se tenha um bloco completo de bits. É também chamado de criptografia em Stream de dados, onde a criptografia se dá através de uma operação XOR entre o bit de dados e o bit gerado pela chave. A tabela 1.1 mostra algumas recomendações para selecionar o tipo de algoritmo que deverá ser usado em uma determinada aplicação. Tabela 1.1 - Escolhendo um algoritmo por aplicação (BURNETT, 2002) 19
  18. 18. Cifragem Aplicação Comentários Recomendada Banco de A interoperabilidade com um outro software não é uma Bloco Dados questão, mas é necessário reutilizar as chaves. Ganha-se interoperabilidade em todos os pacotes de e-mail E-mail AES utilizando o AES padrão. A velocidade é extremamente importante, cada conexão SSL RC4 pode ter uma nova chave. Assim, na prática, a maioria dos navegadores e servidores possuem o RC4. A interoperabilidade não é uma questão, porém cada Criptografia de Bloco arquivo pode ser cifrado com a mesma chave e então Arquivos proteger essa chave.1.1.5 Vírus ou Informação Cifrada Fernando de la Cuadra, editor técnico internacional da empresa Panda Software, empresa de software de segurança e antivírus, aponta em seu artigo vantagens e problemas da criptografia atual (CUADRA, 2003). Enviar uma mensagem cifrada por correio eletrônico traz vantagens tanto para o emissor como para o receptor. A confidencialidade está praticamente assegurada. Ninguém que não conheça a chave utilizada na cifragem poderá entender as informações da mensagem. Assim, pode-se enviar todo tipo de informação com um bom nível de segurança, e praticamente estará salvo de teóricas interceptações na comunicação. Mas quem intercepta uma comunicação? Em principio imagina-se que seja um hacker, um espião ou qualquer outro usuário que queira acessar as informações da comunicação, mas também pode ser um antivírus fazendo uma verificação. Um antivírus sempre tentará impedir o ataque de um vírus, para isso, este examinará a mensagem enviada pelo correio eletrônico. O que pode acontecer é que dentro do conteúdo de uma mensagem cifrada pode existir um vírus e o antivírus não o identificará. Ou ainda, o antivírus pode identificar uma mensagem cifrada como sendo um vírus e esta mensagem poderá ser excluída. Atualmente 90% dos vírus estão espalhados pela Internet. Sendo assim, o mais lógico é a instalação de antivírus nos firewalls, proxys, etc. Mas se o vírus estiver em uma mensagem de correio eletrônico cifrada, até o melhor antivírus poderá falhar em seu objetvo de proteger as informações. E os usuários que receberem a mensagem cifrada, inconscientemente, serão infectados (CUADRA, 2003). Em definitivo, ninguém dúvida que os sistemas de criptografia sejam uma ferramenta que fornece segurança às comunicações, mas podem ter uma deficiência: podem esconder vírus. Uma solução para evitar que o vírus cifrado entre em uma determinada companhia ou organização, deveria ser uma proteção efetiva que bloqueia as mensagens cifradas não autorizadas, antes de chegar aos usuários finais (CUADRA, 2003). 20
  19. 19. 1.2 Importância da Chave ou “senha” O termo “chave” vem do fato de que o número secreto, a famosa senha usada nos nos sistemas computacionais, funciona da mesma maneira que uma chave convencional usada nas portas e entradas a lugares fechados de residências, empresas e etc. de modo a proteger o patrimônio de um determinado usuário. Assim, de forma similar acontece com a criptografia, onde para proteger a informação de um determinado usuário (armazenada em arquivos de computador), se deve instalar uma fechadura (algoritmo de criptografia). Para operar a fechadura precisa-se da famosa chave ou senha (número secreto), a qual permite cifrar ou decifrar a informação desejada. O algoritmo realiza seus passos utilizando a chave para alterar o texto simples (mensagem original) e convertê-lo em texto cifrado. Para recuperar a informação em forma legível, é necessário inserir a mesma chave ou alguma que esteja relacionada com aquela que foi usada no processo anterior, e executar a operação inversa. O algoritmo inverte os passos e converte o texto cifrado de volta no texto simples original. Assim como apenas a chave correta de um determinado prédio pode abrir sua entrada, apenas a chave correta usada em criptografia pode cifrar ou decifrar os dados. Na criptografia de chave simétrica, a chave que é utilizada para criptografar os dados é a mesma chave que é utilizada para decifrá-los. Na criptografia assimétrica, usa-se outra chave que possui um valor relacionado com essa primeira chave, na seção 1.3 apresenta-se mais detalhes sobre criptografia simétrica e assimétrica. Toda criptografia moderna e computadorizada opera com chaves. Por que uma chave é necessária? Por que não criar um algoritmo que não necessite de uma chave?. Se os invasores podem entender o algoritmo, eles podem recuperar os dados secretos simplesmente executando o algoritmo. Uma primeira solução seria manter o algoritmo em segredo, mas essa abordagem tem vários problemas. Um deles é, supondo que não seja possível manter o algoritmo em segredo, os invasores sempre quebram o algoritmo. Isso não seria possível se houvesse especialistas em criptografia que desenvolvem seus próprios algoritmos, mas neste caso também deve-se confiar que a empresa ou usuário que escreveu o algoritmo nunca o revele. Neste ponto aparece um aspecto relevante em criptografia: o que é mais importante, um algoritmo que deve ser mantido em segredo ou um algoritmo que pode fazer seu trabalho de cifrar informações mesmo que os usuários de sistemas computacionais saibam como ele funciona. Neste segundo aspecto, aparece a importância dos algoritmos com chave, e principalmente, a relevância da chave. As chaves aliviam a preocupação com o algoritmo utilizado no esquema de criptografia. Em termos computacionais para proteger os dados com uma chave, é necessário proteger apenas a chave, algo que é mais fácil de ser feito do que proteger 21
  20. 20. um algoritmo. Além disso, se utilizar chaves para proteger os segredos, é possívelutilizar diferentes chaves para proteger diferentes segredos. Isso significa que sealguém descobrir (“quebrar”) uma das chaves, os outros segredos ainda poderãoestar seguros. Se alguma informação depender somente de um algoritmo secreto,algum invasor que quebre esse segredo obterá acesso a todas as informaçõescontidas em um determinado sistema computacional.Assim, as chaves são muito importantes em criptografia. Esse é o princípio deKerckhoffs, que diz da relevância do espaço de chaves, é muito mais seguro umsistema onde se conhece o algoritmo de criptografia, do que o espaço de chaves.Manter em segredo as chaves, e supondo conhecer o algoritmo usado, gera-se umsistema incondicional e computacionalmente seguro.Esse princípio ainda é válido, por várias razões (KERCKHOFFS, 1983). Osinvasores podem deduzir um algoritmo sem ajuda nenhuma. Na história dacriptografia nunca alguém foi capaz de manter um algoritmo criptográfico emsegredo. Eles sempre o descobrem.Um exemplo disso é que durantes as guerras, os espiões sempre encontrarammaneiras de descobrir o algoritmo, seja ele originado de uma operação matemáticaou de uma máquina. Eles o roubam ou fazem com que alguém o revele (por meio dechantagem, extorsão ou pelo uso de técnicas de análise criptográfica). Agentessempre descobriam o algoritmo ou obtinham uma cópia da máquina.Por exemplo, na Segunda Guerra Mundial, os soldados poloneses capturaram amáquina alemã Enigma, logo no início da guerra. A Enigma era uma máquina decriptografia que o exército alemão utilizava. Os aliados (isto é, os britânicos) foramcapazes de quebrar o código mais facilmente porque tinham a posse dessa máquina.Alternativamente, os analistas criptográficos descobrem o algoritmo. Na SegundaGuerra Mundial, decifradores de código dos Estados Unidos foram capazes dedeterminar o funcionamento interno das máquinas codificadas japonesas sem ter aposse de uma dessas máquinas.Um caso mais recente, refere-se ao exemplo do algoritmo RC4, um algoritmoinventado em 1987, mas nunca publicado. Os analistas de criptografia e outrosespecialistas o estudaram e determinaram que o RC4 era uma boa maneira de manteros dados em segredo. Atualmente o RC4 é utilizado como parte do Secure SocketsLayer (SSL), o protocolo de comunicação segura da WEB (World Wide Web).Mas a empresa que o criou, a RSA Data Security, nunca tornou público ofuncionamento interno do algoritmo RC4. Esse segredo tinha interesses financeiros enão de segurança. A empresa esperava que mantendo-o em segredo ninguém mais oimplementaria e o comercializaria. Em 1994, hackers anônimos divulgaram oalgoritmo na Internet. Acredita-se que eles provavelmente o descobriram usando umdepurador de linguagem assembly, após terem tido acesso a uma cópia do código-objeto.Se um sistema criptográfico estiver baseado no hardware, os engenheiros abrem-no eexaminam as partes internas. Em 1998, David Wagner e Ian Goldherg, nessa época 22
  21. 21. alunos graduados da Universidade da Califórnia em Berkeley, abriram um telefone celular digital, supostamente seguro, e quebraram seu código. Às vezes é possível manter um algoritmo em segredo por um período suficientemente longo para que ele seja eficaz, mas após certo tempo alguém acaba descobrindo-o. A segunda razão de relevância da senha, mais do que o algoritmo usado refere-se à assuntos comerciais. Empresários e usuários sempre desejam saber como um determinado software de interesse foi realizado. Caso a empresa não revele os segredos de implementação e construção, através de técnicas de reengenharia reversa sobre um software pode-se conhecer detalhes da sua criação e respectiva implementação. Soma-se a isso o fato que somente pessoas que adquiriram o produto podem se comunicar entre si. Isso enviabiliza a comunicação com pessoas que não adquiriram ou compraram o algoritmo de um mesmo fornecedor. Dessa maneira, como resultado, os algoritmos devem ser padronizados e isso significa que eles devem ser públicos. Se alguém quiser utilizar a criptografia, é necessário empregar um dispositivo de hardware ou um programa de software. Portanto, se faz necessário adquirir o produto em algum lugar. Assim, como os usuários podem ter acesso a ele, os invasores também têm. Desse modo, possíveis invasores podem ir à mesma fonte e conseguir suas próprias cópias. Isso faz com que os algoritmos devem ser disponibilizados, e melhor então, deve-se cuidar da chave. Uma outra razão para cuidar da chave e não do algoritmo refere-se ao fato que é possível construir sistemas criptográficos no qual o algoritmo é completamente conhecido, mas é seguro pois os possíveis invasores precisam conhecer a chave para descobrir as informações. Estes sistemas são mais seguros do que aqueles que não tem chave, e somente confiam no segredo de não se conhecer o algoritmo. Quando os algoritmos se tornam públicos, os analistas criptográficos e os profissionais da área de computação têm uma chance de examinar suas fraquezas. Se um algoritmo for vulnerável, pode optar por não utilizá-lo. Caso contrário, pode ter certeza de que os dados estão seguros. Por outro lado, se um algoritmo for mantido em segredo, os analistas não serão capazes de encontrar nenhuma fraqueza que ele possa ter, assim não se sabe se ele é ou não é vulnerável.1.2.1 Como Gerar a Chave Em um sistema criptográfico de chave simétrica, a chave é formada por um conjunto de caracteres. Ele pode ser um número qualquer, ou uma seqüência de caracteres 23
  22. 22. alfanuméricos (letras e símbolos especiais) contanto que tenha um tamanho correto e adequado àquele que o algoritmo criptográfico selecionado permitir. Geralmente, aconselha-se que a chave seja formada por números ou caracteres alfanuméricos sem coerência nenhuma entre si, pois assim fica mais díficil descobrí- la (ou em termos criptográficos, quebrá-la). A chave deve ser, dentro do possível, selecionada de forma aleatória. Para os criptógrafos, valores aleatórios são simplesmente conjuntos de números que passam em testes estatísticos de aleatoriedade e não são repetíveis. Com esse intuito, de gerar chaves, há várias técnicas usadas. Entre elas destaca-se a utilização de sistema geradores de número aleatórios (GNA) ou RNG (Random Number Generator). Esses dispositivos funcionam agrupando números de diferentes tipos de entradas imprevisíveis como a medição da desintegração espontânea de radioatividade, o exame das condições atmosféricas ou o cálculo de minúsculas variâncias na corrente elétrica. Esses números passam por testes de aleatoriedade. Se solicitar um segundo grupo de números, a nova seqüência será completamente diferente, isto é, nunca receberá a mesma seqüência novamente. Isso ocorre porque a saída é baseada em uma entrada que sempre está mudando. Esses números podem ser obtidos utilizando algoritmos chamados de GNPA geradores de números pseudo-aleatórios (pseudo-random number generators - PRNGs). Se um desses algoritmos for utilizado para gerar alguns milhares de números e aplicar testes estatísticos, os números passariam no teste de aleatoriedade. O que torna esses números pseudo-aleatórios, e não aleatórios, é que eles são repetíveis. Se for instalado o mesmo GNPA em um outro computador, os mesmos resultados poderão vir a ser obtidos. Se o programa for executado um tempo depois, os mesmos resultados podem ser obtidos. Para evitar esse problema, costuma-se usar GNPA com uma entrada diferente em cada evento de utilização (chamada de semente). Assim, gerar-se-á dados diferentes, pois alterando a entrada, a saída será alterada. A geração aleatória dessa chave está associada a dois parâmetros importantes: velocidade de geração e entropia, as quais estão intimamente relacionadas com o tamanho da chave.1.2.2 Importância do Tamanho da Chave Se os invasores puderem descobrir qual é a chave usada na cifragem dos dados, eles podem decifrar a mensagem enviada e obter os dados contidos nela. Um método, conhecido como ataque de força bruta, consiste em tentar todas as possíveis chaves até que a correta seja identificada. Ele funciona dessa maneira. Suponha que a chave seja um número entre 0 e 1.000.000 (um milhão). O invasor pega o texto cifrado e alimenta o algoritmo de criptografia junto com a “suposta chave” de valor “0”. O algoritmo realiza seu trabalho e produz um resultado. Se os dados resultantes parecerem razoáveis, “0” provavelmente é a chave correta. Se for um texto sem sentido, “0” não é a verdadeira chave. Nesse caso, ele tenta outro valor, por exemplo “1” e em seguida “2”, “3”, “4” e assim por diante. 24
  23. 23. Um algoritmo simplesmente realiza os passos, independentemente da entrada. Elenão tem nenhuma maneira de saber se o resultado que ele produz é o correto. Mesmose o valor for um próximo da chave, talvez errado em apenas “1”, o resultado seráum texto sem sentido.Assim, é necessário examinar o resultado e compará-lo para identificar algumsentido e assim informar se o valor usado como chave pode ser a chave realmenteusada para cifrar as mensagens.Como isso depende de uma seqüência de entrada e saída, com valores supostos dechaves, um método consiste em criar programas que façam esses passos atédescobrirem alguma informação.Normalmente, esse processo requer pouco tempo para testar uma chave. Assim,pode-se escrever um programa que verifique várias chaves por segundo.Computacionalmente isso torna possível descobrir qualquer chave, somente precisa-se de tempo.Interessante perceber que esse tempo de procura está fortemente associado aotamanho da chave. Chaves criptográficas são medidas em bits. O intervalo depossíveis respostas para identificar uma chave está em correspondência ao número2TC, onde “TC” é o Tamanho da Chave em bits.Assim, tendo-se uma chave de 2 bits significa que o intervalo de possíveis valores éde 0 até 22 = 4. Uma chave de 40 bits significa que o intervalo dos possíveis valoresé de 0 até aproximadamente 1 trilhão (240). Uma chave de 56 bits é de 0 atéaproximadamente 72 quatrilhões (256). O intervalo de uma chave de 128 bits é tãogrande que é mais fácil apenas dizer que ela é uma chave de 128 bits (número depossibilidades igual a 2128).Cada bit adicionado ao tamanho da chave dobrará o tempo requerido para um ataquede força bruta. Se uma chave de 40 bits levasse três horas para ser quebrada, umachave de 41 bits levaria seis horas, uma chave de 42 bits, 12 horas e assim pordiante. Isso acontece pois cada bit adicional da chave dobra o número de chavespossíveis, (lembrar que esse número está em função de 2TC). Assim ao adicionar umbit o número de chaves possíveis é dobrado. Dobrando o número de chavespossíveis, o tempo médio que um ataque de força bruta leva para encontrar a chavecorreta também é dobrado.Portanto, para se ter maior segurança, isto é tornar o trabalho de um determinadoinvasor mais difícil, deve-se escolher uma chave maior. Chaves mais longassignificam maior segurança. A tabela 1.2 mostra o impacto de se aumentar otamanho da chave e o respectivo tempo de quebrar a chave usando ataque por forçabruta, assim como a respectiva estimativa de custo (em doláres) da tecnologianecessária para encontrar a chave. Pode-se ver que tendo mais recursos disponíveis(em tecnologia e portanto maior custo em doláres) é possível diminuir o tempo de seencontrar uma determinada chave. Não obstante seja possível achar a chave, hátamanhos de chave que inviabilizam esse fato, pois demandaria muito tempo. 25
  24. 24. Nessa tabela, o termo 2s significa 2 segundos; 200ms siginifica que o tempo é dadoem milisegundos (10-3 segundos); 200 us significa que o tempo é dado emmicrosegundos (isto é, 10-6 segundos).Tabela 1.2 – Tempo gasto para quebra de chaves por força bruta (SCHNEIER, 1996) Tamanho da Chave (bits) Custo U$ 40 56 64 80 112 128 100000 2s 35 horas 1 ano 70000 anos 10 e 14 10 e 19 1 Milhão 200 ms 3,5 h 37 dias 7000 anos 10 e 13 10 e 18 10M Milhões 20s 21 m 4 dias 700 anos 10 e 12 10 e 17 100 M 2 ms 2m 9h 70 anos 10 e 11 10 e 16 1G 200 us 13 s 1h 7 anos 10 e 10 10 e 15 10G 20 us 1 s 5,4 m 245 anos 10 e 9 10 e 14 100G 2 us 100 ms 32 s 24 anos 10 e 8 10 e 13 1T 0,2 us 10 ms 3 s 2,4 anos 10 e 7 10 e 12 10T 0,02 us 1 ms 300 ms 6 horas 10 e 6 10 e 11Importante lembrar que o poder computacional dobra a cada 1.5 anos, e que o tempode existência do universo, segundo os últimos estudos científicos, está em torno de10 10e10 anos. Assim, chega-se à conclusão que sempre é possível decrifrar umadeterminada mensagem, pois sempre será possível descobrir a chave: basta testartodas as chaves possíveis –é somente uma questão de tempo. Mas pode demorarmais que o tempo de duração do Universo (SCHNEIER, 1996).Então, qual o tamanho máximo que uma chave deve ter? Com o passar dos anos, oRSA Laboratories propôs alguns desafios. A primeira pessoa ou empresa a quebraruma mensagem em particular ganharia um prêmio em dinheiro. Alguns desafiosforam testes do tempo de um ataque de força bruta. Em 1997, uma chave de 40 bitsfoi quebrada em três horas e uma chave de 48 bits durou 280 horas. Em 1999, aElectronic Frontíer Foundation encontrou uma chave de 56 bits em 24 horas. Emcada um dos casos, pouco mais de 50% do espaço de chave foi pesquisado antes de achave ser encontrada.Em todas essas situações, centenas ou até milhares de computadores operavamconjuntamente para quebrar as chaves. Na realidade, com o desafio de 56 bits deDES que a Electronic Frontier Foundation quebrou em 24 horas, um doscomputadores era um cracker especializado em DES. Esse tipo de computador fazapenas uma coisa: verifica as chaves de DES.Um invasor que trabalhe secretamente, provavelmente não seria capaz de reunir aforça de centenas de computadores e talvez não possua uma máquinaespecificamente construída para quebrar um algoritmo em particular. Para a maioriados invasores, essa é a razão pela qual o tempo que leva para quebrar a chave quasecertamente seria significativamente mais alto. Por outro lado, se o invasor fosse umaagência governamental de inteligência com grandes recursos, a situação seriadiferente. 26
  25. 25. Pode-se pensar em situações ainda mais críticas. Suponha que examinar 1% doespaço de chave de uma chave de 56 bits leva 1 segundo e examinar 50% leva 1minuto. Todas as vezes que se adicionar um bit ao tamanho de chave dobra-se entãoo tempo de pesquisa. Os resultados são mostrados na tabela 1.3, onde se percebeque o impacto e observações realizadas para os dados da tabela 1.2, são tambémaplicavéis. Tabela 1.3 – Tempo gasto para quebra de chaves (BURNETT, 2002) Bits 1% do Espaço da Chave 50% do Espaço da Chave 56 1 segundo 1 minuto 57 2 segundos 2 minutos 58 4 segundos 4 minutos 64 4,2 minutos 4,2 horas 72 17,9 horas 44,8 dias 80 190,9 dias 31,4 anos 90 535 anos 321 séculos 108 140.000 milênios 8 milhões de milênios 128 146 bilhões de milênios 8 trilhões de milêniosAtualmente, 128 bits é o tamanho de chave simétrica mais comumente utilizado. Sea tecnologia avançar e os invasores de força bruta puderem melhorar esses números(talvez eles possam reduzir para alguns anos o tempo das chaves de 128 bits), entãoprecisar-se-á de chaves de 256 bits ou ainda maiores.Assim, considerando que a tecnologia sempre está avançando, então teremos deaumentar repetidas vezes o tamanho das chaves. Então, com o passar do temposempre será necessário aumentar o tamanho das chaves. É bom lembrar queaumentar a chave significa também em aumentar o tempo cifragem e decifragem.Por isso é recomnedável ter cuidados com a escolha do tamanho da chave. Assim, épossível pensar que pode chegar um um momento quando precisaremos de umachave tão grande que ela se tornará muito difícil de lidar. No momento atual, econsiderando os conhecimnentos adquiridos na área de segurança, quase certamentenunca precisaremos de uma chave mais longa do que 512 bits (64 bytes). Supondoque cada átomo no universo conhecido (há aproximadamente 2300) fosse umcomputador e que cada um desses computadores pudesse verificar 2300 chaves porsegundo, isso levaria cerca de 2162 milênios para pesquisar 1% do espaço de chavede uma chave de 512 bits. De acordo com a teoria do Big Bang, o tempo decorridodesde a criação do universo é menor de 224 milênios. Em outras palavras, é 27
  26. 26. altamente improvável que a tecnologia vá tão longe para forçar a utilizar chaves que sejam “muito grandes” (BURNETT, 2002). Apesar do ataque de força bruta precisar de muito tempo, principalmente quando a chave possui um tamanho razoável, há outros ataques que exploram as fraquezas nos algoritmos criptográficos, e tendem a diminuir o tempo do ataque. Por esse motivo, no momento recomenda-se usar chaves relativamente longas, superiores a 128 bits. Já aplicações comerciais e financeiras (por exemplo, transações bancárias), é necessário que a chave seja maior que 128 bits. Isso significa que usuário comum que tente fazer um ataque de força bruta, precisará de muito tempo para ter uma invasão considerada bem sucedida.1.3 Criptografia de Chave Simétrica e Assimétrica Na criptografia de chave simétrica os processos de cifragem e decifragem são feitos com uma única chave, ou seja, tanto o remetente quanto o destinatário usam a mesma chave. Em algoritmos simétricos, como por exemplo o DES (Data Encription Standard), ocorre o chamado "problema de distribuição de chaves". A chave tem de ser enviada para todos os usuários autorizados antes que as mensagens possam ser trocadas. Isso resulta num atraso de tempo e possibilita que a chave chegue a pessoas não autorizadas. A criptografia assimétrica contorna o problema da distribuição de chaves através do uso de chaves públicas. A criptografia de chaves públicas foi inventada em 1976 por Whitfield Diffie e Martin Hellman a fim de resolver o problema da distribuição de chaves. Neste novo sistema, cada pessoa tem um par de chaves chamadas: chave pública e chave privada. A chave pública é divulgada enquanto que a chave privada é deixada em segredo. Para mandar uma mensagem privada, o transmissor cifra a mensagem usando a chave pública do destinatário pretendido, que deverá usar a sua respectiva chave privada para conseguir recuperar a mensagem original. Atualmente, um dos mecanismos de segurança mais usados é a assinatura digital, a qual precisa dos conceitos de criptografia assimétrica. A assinatura digital é uma mensagem que só uma pessoa poderia produzir, mas que todos possam verificar. Normalmente autenticação se refere ao uso de assinaturas digitais: a assinatura é um conjunto inforjável de dados assegurando o nome do autor que funciona como uma assinatura de documentos, ou seja, que determinada pessoa concordou com o que estava escrito. Isso também evita que a pessoa que assinou a mensagem depois possa se livrar de responsabilidades, alegando que a mensagem foi forjada. Um exemplo de criptossistema de chave pública é o RSA (Rivest-Shamir-Adelman). Sua maior desvantagem é a sua capacidade de canal limitada, ou seja, o número de bits de mensagem que ele pode transmitir por segundo (BURNETT, 2002). A figura 1.4 ilustra o funcionamento da criptografia simétrica e assimétrica. Observa-se que existem duas chaves na criptografia assimétrica. 28
  27. 27. Figura 1.4 – Modelo simétrico e assimétrico de criptografia.Após analisar o exposto acima, pode-se ficar em dúvida de qual modelo utilizar:simétrico ou assimétrico. Pois bem, devido a isso foi desenvolvido um modelohíbrido, ou seja, que aproveitasse as vantagens de cada tipo de algoritmo. Oalgoritmo simétrico, por ser muito mais rápido, é utilizado no ciframento damensagem em si, enquanto o assimétrico, embora lento, permite implementar adistribuição de chaves e alguns a assinatura digital.Então, os algoritmos criptográficos podem ser combinados para a implementaçãodos três mecanismos criptográficos básicos: o ciframento, a assinatura digital e ohashing, sendo que estes últimos dois conceitos ainda serão descritos e analisadosem capítulos posteriores. Estes mecanismos são componentes de protocoloscriptográficos, embutidos na arquitetura de segurança dos produtos destinados aocomércio eletrônico. Estes protocolos criptográficos, portanto, provêm os serviçosassociados à criptografia que viabilizam o comércio eletrônico.Descreve-se abaixo alguns exemplos de protocolos que empregam sistemascriptográficos híbridos.O IPSec é o padrão de protocolos criptográficos desenvolvidos para o IPv6. Realizatambém o tunelamento de IP sobre IP. Prometido como futuro padrão para todas asformas de VPN – Virtual Private Network(MAIA, 1999).O SSL e TLS oferecem suporte de segurança criptográfica para os protocolos NTTP,HTTP, SMTP e Telnet. Permitem utilizar diferentes algoritmos simétricos, messagedigest e métodos de autenticação e gerência de chaves para algoritmos assimétricos(MAIA, 1999). O SSL, que significa Security Socket Layer, é o protocolo mais 29
  28. 28. conhecido em transações via WEB e hoje domina esse mercado, estando presenteprincipalmente em vendas on-line envolvendo cartão de crédito. Foi criado pelaNetscape, sendo o padrão livre para uso pessoal e empresarial. Ressalte-senovamente o nível de segurança deste protocolo, o qual assegura a inviolabilidadedas vendas on-line com cartão de crédito (GEEK, 2002).Pode-se citar também como exemplo o PGP, já descrito anteriormente, lembrando-sede que se trata de um programa de criptografia famoso e bastante difundido nainternet, destinado a criptografia de e-mail. Suporta os algoritmos hashing MD5 eSHA-1.O S/MIME (Secure Multipurpose Internet Mail Extensions) consiste em um esforçode um consórcio de empresas, tendo inclusive como um dos líderes a Microsoft, paraadicionar segurança a mensagens eletrônicas no formato MIME. Acredita-se que oS/MIME deverá se estabelecer no mercado corporativo, enquanto que o PGP atuaráno mundo do e-mail pessoal (MAIA, 1999).Já o SET é um conjunto de padrões e protocolos para realizar transações financeirasseguras, como as realizadas com cartões de crédito na internet. Oferece um canalseguro entre todos os envolvidos na transação, bem como autenticidade eprivacidade entre as partes envolvidas.A especificação X.509 define o relacionamento entre as autoridades de certificação.Baseado em criptografia de chave pública e assinatura digital (MAIA,1999).Pode-se então traçar um comparativo entre os modelos vistos (criptografia simétricae assimétrica), conforme se mostra na Tabela 1.4. Tabela 1.4 Comparação entre os Tipos de Algoritmos de Criptografia Criptografia Simétrica Criptografia Assimétrica Rápida Lenta Gerência e distribuição das Gerência e distribuição é simples chaves é complexa Não oferece assinatura digital. Oferece assinatura digitalA tabela 1.5, mostra detalhes dos algoritmos simétricos mais conhecidos pelacomunidade da área de segurança da informação e criptografia. Tabela 1.5 Características dos Algoritmos Simétricos mais Conhecidos 30
  29. 29. Algoritmo Tipo Tamanho Chave Tamanho Bloco DES Bloco 56 64 Triple Des (2 chaves) Bloco 112 64 Triple DES (3 chaves) Bloco 168 64 IDEA Bloco 128 64 Blowfish Bloco 32 a 448 64 RC5 Bloco 0 a 2040 32, 64, 128 CAST-128 Bloco 40 a 128 64 RC2 Bloco 0 a 1024 64 RC4 Stream (fluxo) 0 a 256 -- Rijndael (AES) Bloco 128, 192, 256 128, 192, 256 MARS Bloco Variável 128 RC6 Bloco Variável 128 Serpent Bloco Variável 128 Twofish Bloco 128, 192, 256 128Nessa tabela é possível observar que a maioria dos algoritmos criptográficos modernos, osmais usados na atualidade, são baseados no sistema de cifrar as informações por bloco,cujo tamanho de bloco mais usado é de 64 bits e possuem chaves de tamanhorelativamente grande, superior a 56 bits. Outro aspecto que merece destaque, é o fato dealguns algoritmos possuem tamanhos de chave e/ou de bloco variável (ver situação dosalgoritmos blowfish, RC5, CAST, RC2, RC4, Rijndael - AES, MARS, RC6, Serpent eTwofish, que casualmente foram os algoritmos que fizeram parte do projeto AES)(BIHAM, 1999).1.4 Assinatura Digital Alguns algoritmos criptográficos de chave-pública permitem a sua utilização para gerar o que se denomina de assinaturas digitais. O algoritmo RSA é um destes algoritmos, assim, além da operação normal de cifrar com a chave-pública e decifrar com a chave-privada, permitir que, cifrando-se com a chave-privada, o processo de decifrar com a chave-pública resulta na recuperação da mensagem (BUCHMANN, 2001). Obviamente esta forma de uso não assegura o sigilo da mensagem, uma vez que qualquer um pode decifrar a mensagem, dado que a chave-pública é de conhecimento público. Entretanto, se esta operação resulta na mensagem esperada pode-se ter a certeza de que somente o detentor da correspondente chave-privada poderia ter realizado a operação de cifragem. Assim, uma assinatura digital é o criptograma resultante da cifração de um determinado bloco de dados (documento) pela utilização da chave-privada de quem assina em um algoritmo assimétrico. A verificação da assinatura é feita decifrando- se o criptograma (assinatura) com a suposta chave-pública correspondente. Se o resultado for válido, a assinatura é considerada válida, ou seja, autêntica, uma vez que apenas o detentor da chave privada, par da chave pública utilizada, poderia ter gerado aquele criptograma. Na figura 1.5 ilustra-se este procedimento. 31
  30. 30. Figura 1.5 – Geração de Assinatura Digital de um documento (BURNETT, 2002).Nesta figura um usuário de nome Fábio assina um documento, cifrando-o com suachave-privada e enviando tanto o documento original quanto a assinatura para umoutro usuário chamado de Edward. Este usuário verifica a assinatura decifrando-acom a chave-pública de Fábio (de conhecimento público), e comparando o resultadocom o documento recebido. Se estiverem de acordo, a assinatura confere, casocontrário a assinatura é considerada inválida, significando que ou não foi Fábioquem assinou, ou o documento foi adulterado após a assinatura. Interessanteobservar que este procedimento é capaz de garantir tanto a origem (autenticação doemissor), tendo em vista que supostamente somente Fábio conhece sua chaveprivada e portanto somente ele é capaz de gerar uma assinatura que possa serverificada com sua chave-pública, como também a integridade do documento, jáque, se o mesmo for alterado, a verificação da assinatura irá indicar isto, caso tenhavindo efetivamente do pretenso emissor.Usualmente, face à ineficiência computacional dos algoritmos assimétricos, osmétodos para assinatura digital empregados na prática não assinam o documento quese deseja autenticar em si, mas uma súmula deste, obtida pelo seu processamentoatravés do que se denomina uma função de Hashing. Uma função de hashing é umafunção criptográfica que gera uma saída de tamanho fixo (geralmente 128 a 256 bits)independentemente do tamanho da entrada. A esta saída se denomina de hash damensagem (ou documento ou o que quer que seja a entrada). Segundo Burnett(BURNETT, 2002), para ter utilidade criptográfica, a função de hashing deve ser: • Simples (eficiente, rápido) se computar o hash de dada mensagem; • Impraticável se determinar a entrada a partir de seu hash; • Impraticável se determinar uma outra entrada que resulte no mesmo hash de uma dada entrada; • Valores de hash possíveis são estatisticamente equiprováveis. 32
  31. 31. A tabela 1.6 mostra as características dos algoritmos de hashing mais conhecidos pela comunidade da área de segurança de dados. Tabela 1.6 Características dos Algoritmos de hashing mais conhecidos (GUELFI,2002) Algoritmo de Hash Tamanho HASH Kbytes/s Abreast Bavies-Meyer (c/IDEA) 128 22 Davies-Meyer (c/DES) 64 9 GOST-Hash 256 11 NAVAL (3 passos) Variável 168 NAVAL (4 passos) Variável 118 NAVAL (5 passos) Variável 95 MD4 – Message Digest 4 128 236 MD5 – Message Digest 5 128 174 N-HASH (12 rounds) 128 29 N-HASH (15 rounds) 128 24 RIPE-MD 128 182 RIPE-MD-160 160 -- SHA – Secure Hash Algorithm 160 75 SNEFRU (4 passos) 128 48 SNEFRU (8 passos) 128 23 Nessa tabela é possível observar que a maioria dos algoritmos de hashing usam um tamanho de hash fixo, com destaque para 128 e 160 bits, que são os tamanhos mais usados pela comunidade. Os algoritmos mais conhecidos pela comunidade acadêmica e com utilidade comercial são o algoritmo SHA, MD4 e MD5. Já os outros, como o nome indicado na tabela 1.6 sugere, pertencem a aplicações governamentais e de uso privado, como por exemplo aplicações militares e navais.1.5 Considerações Finais do Capítulo Ainda no contexto da visão atual de criptografia, pode-se elencar outros fatores que impulsionam seu estudo e evolução: • A tecnologia de protocolos de rede tornará a Internet uma rota vulnerável à invasões e furto de informações; • Crackers de todas as partes estão dispostos a destruir até mesmo os mais sólidos negócios on-line e possuem armas intelectuais para isso; • E-commerce começou a perder adeptos, por ser suscetível a fraudes em operações envolvendo transferência de dinheiro e cartões de crédito; • Correio eletrônico também não é seguro; • Diversos serviços on-line aproveitam a ingenuidade do internauta para invadir um microcomputador e obter dados pessoais; • Pelo computador é muito mais fácil e provável a aplicação de métodos de monitoramento; 33
  32. 32. • Ainda existe um sentimento de insegurança quando se realiza alguma transação comercial via internet, fazendo com que não seja aproveitado todo o potencial neste tipo de comércio; • A invasão de máquinas/sistemas e roubo de informação é uma realidade, deixando de lado a imagem fictícia e cinematográficas; • Os algoritmos de criptografia ainda são um conceito distante da grande massa de usuários, se apresentado como algo abstrato e intangível.Por esse motivo, este livro além de apresentar de forma clara os algoritmoscriptográficos mais usados no momento, preocupa-se em apresentar dados dedesempenho: tempos de execução do processo de cifragem e decifragem, tempo deprocessamento de alguns algoritmos simétricos (DES, AES, IDEA, RC5) eassimétricos como o RSA e funções de hashing (MD5 e SHA-1), quandoimplementados em software (usando-se da linguagem C e alguns deles em Java) ehardware (em circuitos programáveis – FPGAs através da linguagem especial paradescrição de sistemas digitais, conhecida como VHDL).Um dos pontos de interesse ao leitor é destacar que ao aumentar o tamanho da chaveaumenta o nível de segurança, mas aumenta-se também o tempo de processamentodo processo de cifragem e decifragem. Neste livro mostra-se qual é o real impactodesse processo, tais como impacto do algoritmo no tempo de processamento,impacto do sistema operacional (Windows, Linux), impacto do processador e etc. 34
  33. 33. Capítulo 2Conceitos de Circuitos Programáveis FPGAs eVHDL e VHDL Neste capítulo, apresentam-se conceitos básicos de circuitos programáveis FPGAs e da linguagem de descrição de hardware VHDL. Inicialmente é apresentada a estrutura interna e roteamento dos circuitos FPGAs, discutindo conceitos de reconfiguração. Posteriormente tem-se a definição das formas de descrever um circuito utilizando VHDL, exemplificando cada metodologia de descrição de hardware, onde a sintaxe da linguagem é baseada no padrão VHDL’93. Além de descrever os principais elementos que compõem a estrutura da linguagem como: operadores, expressões, atributos, tipos da linguagem, declaração de entidades e arquiteturas, expressões concorrentes, expressões seqüenciais, processos, comando seqüenciais e outros.2.1 Estrutura Interna de um FPGA Como ponto de partida para este capítulo, faz-se necessário apresentar a estrutura interna de circuitos programáveis FPGAs, mostrando algumas arquiteturas desta tecnologia, bem como discutir os conceitos de reconfiguração e roteamento desses circuitos. Não é objetivo deste livro explorar em profundidade detalhes da tecnologia FPGA, mas apenas alguns conceitos básicos quse serão importantes para entender o projeto e desempenho dos algoritmos criptográficos implementados através desta tecnologia. A figura 2.1 apresenta quatro principais arquiteturas internas utilizadas em circuitos programáveis: matriz simétrica, sea-of-gates, row-based e PLD hierárquico. Já a figura 2.2 mostra que um FPGA (Field Programmable Gate Arrays) são circuitos programáveis compostos de CLBs, switch boxes, IOBs e canais de roteamento. 35
  34. 34. Figura 2.1 – Arquiteturas interna de circuitos programáveis FPGA.A arquitetura sea-of-gates é um circuito composto por transistores ou blocos lógicosde baixa complexidade. A vantagem dessa arquitetura é a grande disponibilidade deportas lógicas por área. Porém, como não há uma área dedicada para o roteamento, énecessário que o mesmo seja feito sobre as células, muitas vezes inutilizando áreasdisponíveis para implementação de uma determinada lógica.Nos circuitos de arquitetura row-based os blocos lógicos estão dispostoshorizontalmente. Existe uma área dedicada de roteamento localizada entre as linhasde blocos lógicos. As arquiteturas row-based e sea-of-gates originaram-se dasmetodologias de projeto de ASICs, standard-cells e gate-array.A arquitetura tipo PLD hierárquico é constituído por uma matriz de blocos lógicos,denominados logic arrays blocks, sendo interligados através do recurso deroteamento conhecido como matriz programável de interconexão (PIA). Esse tipo dedispositivo é dito hierárquico, porque os blocos lógicos podem ser agrupados entresi.A arquitetura tipo matriz simétrica é flexível no roteamento, pois possui canaisverticais e horizontais. 36
  35. 35. Figura 2.2 – Dispositivos internos de um FPGA. Já a figura 2.2 mostra que um FPGA (Field Programmable Gate Arrays) são circuitos programáveis compostos de CLBs, switch boxes, IOBs e canais de roteamento.2.2 Roteamento e Configuração de um FPGA Nesta seção são discutidos conceitos básicos de roteamento e reconfiguração de circuitos programáveis e reconfiguráveis FPGAs. O roteamento é a interconexão entre blocos lógicos através de uma rede de camadas de metal. As conexões físicas entre os blocos lógicos são feitas com transistores controlados por bits de memória (PIP) ou por chaves de interconexão (switch matrix). Eis alguns elementos básicos utilizados na malha de roteamento da família XC4000 da Xilinx: Conexões globais: estas formam uma rede de interconexão em linhas e colunas ligadas através de chaves de interconexão. Esta rede circunda os blocos lógicos (CLBs) e os blocos de E/S (IOBs). Matriz de conexão (Switch Matrix): são chaves de interconexão que permitem o roteamento entre os blocos lógicos através das conexões globais. Conexões diretas: interligam CLBs vizinhos e permitem conectar blocos com menor atraso, pois não utilizam recursos globais de roteamento. Linhas longas: são conexões que atravessam todo o circuito sem passar pelas matrizes de conexão e são utilizadas para conectar sinais longos. A exigência de alto poder de processamento e o surgimento de novas aplicações, promovem uma constante busca por alternativas e arquiteturas que visem melhorar a performance dos computadores, especialmente em aplicações de tempo real. Uma destas alternativas é a reconfiguração. 37
  36. 36. Acoplando um dispositivo programável FPGA a um processador de propósito geral (GPP), torna-se possível a exploração eficiente do potencial das chamadas arquiteturas reconfiguráveis. Arquiteturas reconfiguráveis permitem ao projetista a criação de novas funções, e possibilita a execução de operações com um número consideravelmente menor de ciclos do que necessário em GPPs. Em uma arquitetura reconfigurável, são desnecessárias muitas das unidades funcionais complexas usualmente encontradas em processadores de propósito geral. Os métodos de reconfiguração de um dispositivo programável e reconfigurável podem ser classificados como: Reconfiguração total: é a forma de configuração, onde o dispositivo reconfigurável é inteiramente alterado. Também tratada apenas como configuração. Reconfiguração parcial: é a forma de configuração que permite que somente uma parte do dispositivo seja reconfigurada. A reconfiguração parcial pode ser: não-disruptiva, onde as partes do sistema que não estão sendo reconfiguradas permanecem completamente funcionais durante o ciclo de reconfiguração; ou disruptiva, onde a reconfiguração parcial afeta outras partes do sistema, necessitando de uma parada no funcionamento do mesmo. Reconfiguração dinâmica: também chamada de run-time reconfiguration (RTR), on-the-fly reconfiguration ou in-circuit reconfiguration. Todas essas expressões podem ser traduzidas também como reconfiguração em tempo de execução. Nesse tipo de reconfiguração não há necessidade de reiniciar o circuito ou remover elementos reconfiguráveis para programação. Reconfiguração extrínseca: reconfigura parcialmente o sistema, mas somente considerando cada FPGA que o compõe como unidade atômica de reconfiguração. Reconfiguração intrínseca: reconfigura parcialmente cada FPGA que compõe o sistema. A partir desta seção apresentam-se conceitos básicos da linguagem VHDL utilizados nas implementações dos circuitos digitais básicos descritos no capítulo 3, os quais serão úteis para entender o projeto em hardware dos algoritmos criptográficos focados neste livro.2.3 VHDL - Descrição Estrutural e Comportamental Na linguagem VHDL (VHSIC Hardware Description Language) existem duas formas para a descrição de circuitos digitais: a estrutural e a comportamental. A forma estrutural indica os diferentes componentes que constituem o circuito e suas respectivas interconexões. Desta maneira pode-se especificar um circuito e saber como é seu funcionamento. 38
  37. 37. A forma comportamental consiste em descrever o circuito pensando no seu comportamento e funcionamento e não na sua estrutura. Essa metodologia facilita a descrição de circuitos onde a estrutura interna não está disponível, mas o seu funcionamento e comportamento podem ser interpretados. Assim, esse tipo de descrição vem se desenvolvendo a cada dia. A descrição comportamental pode-se dividir em duas metodologias, dependendo do nível de abstração: a descrição algorítmica e de fluxo de dados. Na descrição de um circuito utilizando a linguagem VHDL, é comum ter-se trechos implementados de maneira comportamental e estrutural, sendo de responsabilidade do projetista a utilização correta dos métodos de implementação de circuitos em VHDL.2.4 Exemplo dos Estilos de Descrições em VHDL A figura 2.3 representa um comparador de 1 bit simplificado. Este será descrito nos dois estilos de descrição de circuitos digitais em VHDL, estrutural e comportamental. Onde U1, U2 são os componentes do circuito, L1 é uma linha de conexão entre os componentes, e E1, E2 e S são as portas de entrada e saída do circuito. Figura 2.3 - Representação de um comparador de 1 bit O funcionamento do comparador de 1 bit é simplificado, onde os valores lógicos da portas de entrada E1 e E2 serão comparados. Se E2 for menor que E1 a saída S recebe o valor lógico ‘1’, caso contrário, ‘0’. Este exemplo do comparador de 1 bit será utilizado para demostrar as formas de descrição de circuito digitais em VHDL nas seções 2.4.1, 2.4.2 e 2.4.3.2.4.1 Descrição Algorítmica A descrição algorítmica é um conjunto de passos que descreve de forma comportamental o circuito digital projetado. Em primeiro lugar, deve-se descrever a entidade do circuito, onde são definidas as portas de entrada e saída. A entidade (entity) independente do método de descrição de circuitos digitais sempre se mantém a mesma. Já a arquitetura (architecture) é responsável pela descrição do circuito de maneira estrutural ou comportamental. Neste caso, o comparador de 1 bit (figura 2.3) é descrito na seqüência, de maneira comportamental, aplicando o princípio algorítmico. 39
  38. 38. Comparador de 1 Bit (Descrição Algorítmica) -- definição da entidade: portas de E/S entity comp is port (e1,e2: in bit; s: out bit); end comp; -- definição da arquitetura: descrição da lógica interna do circuito architecture comp_alg of comp is begin process (e1,e2) begin if e2 < e1 then s<=’1’; else s<= ‘0’; end if; end process; end comp_alg; Nota-se que a comparação foi descrita de forma comportamental utilizando o comando seqüencial IF-THEN-ELSE, desprezando a lógica composta pelas portas lógicas XOR e AND do comparador de 1 bit representado na figura 2.3.2.4.2 Descrição de Fluxo de Dados A descrição de fluxo de dados pode ser visualizada como a transferência entre registradores possibilitando o paralelismo de instruções. Quando se tem várias instruções, estas tornam-se concorrentes entre si. Comparador de 1 Bit (Descrição de Fluxo de Dados ) architecture comp_fluxo_dados of comp is begin s<= e1 when e2> e1 else e2; end comp_fluxo_dados; É interessante perceber que em ambas as descrições comportamentais não foi necessário utilizar os componentes do circuito descrito na figura 2.3, descrevendo apenas o comportamento em um alto nível de abstração.2.4.3 Descrição Estrutural 40
  39. 39. Para descrever um circuito na forma estrutural, deve-se conhecer seus componentes e interconexões. Em sistemas onde não é possível visualizar a estrutura interna de maneira detalhada, torna-se difícil a descrição utilizando a metodologia estrutural. Comparador de 1 bit (Descrição Estrutural) architecture comp_fluxo_dados of comp is signal l1: bit; begin u1: entity xor2 port map (e1,e2,l1); u2: entity and2 port map (e1,l1,s); end comp_fluxo_dados; Interessante observar que sem a correta visualização dos componentes e as respectivas interconexões do comparador de 1 bit, conforme a descrição da figura 2.3, pode dificultar sua descrição estrutural em VHDL.2.5 Elementos Sintáticos do VHDL Toda linguagem possui elementos sintáticos, tipos de dados e estruturas. A linguagem VHDL não é diferente, porém é uma linguagem de descrição de hardware, portanto deve oferecer suporte para a descrição de trechos concorrentes. A seguir os elementos sintáticos mais comuns: Comentários: Qualquer linha precedida de -- não será compilada. Símbolos especiais: Contendo apenas um caracter: + - / * ( ) . , : ; & ‘ “ < > = | # Contendo dois caracteres: ** => := /= >= <= <> -- Identificadores: Identificadores são usados para nomear objetos da linguagem como variáveis, sinais, rotinas, etc. Composto por letras, números e o símbolo “_”. Nunca pode conter símbolos especiais ou coincidir com palavras reservadas. Maiúsculas e minúsculas são consideradas iguais, assim VHDL, vhdl e VhDl são possibilidades que representam o mesmo objeto. Números: Qualquer número que se encontra é considerado na base 10. Admite-se a notação científica convencional para números com ponto flutuante. É possível alterar a base de um número usando o simbolo “#”. Exemplo: 2#00001111, 16#0F ambos representam o número 15, respectivamente na base 2 e 16. Caracteres: Qualquer caracter deve estar entre aspas simples: Exemplo ‘1’ ‘A’. Cadeia de bits: Cadeia ou vetor de bits é uma seqüência de bits em uma determinada base Ex.: B “00001111”, X”0F”, onde B é binário e X Hexadecimal. Palavras reservadas: São palavras que possuem um significado especial, são instruções e elementos que permitem definir sentenças. As palavras reservadas do padrão VHDL’93 são (ORDONEZ, 2003): 41
  40. 40. ABS CONFIGURATION INOUT OR THEN ACCESS CONSTANT IS OTHERS TO AFTER DISCONNECT LABEL OUT TRANSPORT ALIAS DOWNTO LIBRARY PACKAGE TYPE ALL ELSE LINKAGE PORT UNITS AND ELSIF LOOP PROCEDURE UNTIL ARCHITECTU END MAP PROCESS USE RE ARRAY ENTITY MOD RANGE VARIABLE ASSERT EXIT NAND RECORD WAIT ATTRIBUTE FILE NEW REGISTER WHEN BEGIN FOR NEXT REM WHILE BLOCK FUNCTION NOR REPORT WITH BODY GENERATE NOT RETURN XOR BUFFER GENERIC NULL SELECT XNOR BUS GUARDED OF SEVERITY SLL CASE IF ON SIGNAL SLA COMPONENT IN OPEN SUBTYPE ROL GROUP POSTPONED ROR SRA REJECT IMPURE PURE SHARED SRL INERTIAL LITERAL UNAFFECTED2.6 Operadores em VHDL Operador de concatenação: & concatena bits e cadeias de bits, gerando um novo vetor de bits. Ex.: S<= “000”&”111”; faz com que o vetor S seja de 6 bits; Operadores aritméticos A seguir uma descrição dos operadores aritméticos: Operador Descrição da Funcionalidade ** serve para elevar um número a uma potência: 2**3 é 23. O operador pode ser inteiro ou real. ABS devolve o valor absoluto. * serve para multiplicar qualquer dado do tipo numérico (bit e bit_vector não são numéricos). / serve para dividir qualquer dado numérico; MOD calcula o módulo de dois números e os operandos só podem ser inteiros. REM calcula o resto da divisão inteira. + quando está entre dois operandos calcula a soma, quando está na frente de um operando, indica que este é positivo. - quando está entre dois operandos calcula a subtração. Quando esta na frente de um operando, indica que este é negativo. Operadores relacionais 42
  41. 41. = ou /= O primeiro indica true, se os operandos forem iguais e false se forem diferentes. O segundo funciona justamente ao contrário, indicando o fato das relações sendo comparadas são diferentes ou não. < , <= , > ou >= indicam respectivamente menor, menor igual, maior e maior igual. Operadores lógicos NOT , AND , NAND , OR , NOR , XOR ou XNOR atuam sobre os tipos bit, bit_vector e boolean. No caso de operações com vetores, a operação é realizada bit a bit.2.7 Tipos de Dados em VHDL Há basicamente dois tipos de dados: escalares e compostos. A seguir, uma melhor descrição de cada um deles.2.7.1 Tipos Escalares Inteiros: São dados cujo conteúdo é um valor numérico inteiro. Pode definir um intervalo usando a palavra reservada RANGE, e os limites do intervalo são do tipo numérico inteiro. Ex.: TYPE integer IS RANGE 0 TO 255, neste caso tem-se um tipo inteiro que pode variar dentro do intervalo de 0 a 255. Reais: Conhecidos como numeração com ponto flutuante que define um número real. Pode-se utilizar intervalos do tipo numérico real. Ex.: TYPE real IS RANGE 0.0 TO 9.0; Físicos: Como o próprio nome já diz, são dados que correpondem a fenômenos físicos e portanto expressam medidas físicas. Ex.: TYPE altitude IS RANGE 0 TO 1.0e6; UNITS um; mm=1000um; 43

×