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

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

If you can't read please download the document

Upload: edward-david-moreno

Post on 02-Jun-2015

14.991 views

Category:

Technology


19 download

DESCRIPTION

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

TRANSCRIPT

  • 1. Dedicatria Agradeo minha familia pelo apoio, incentivo e compreenso nos momentos de ausncia e, em especial, por terem sempre pacincia e muito amor. minha familia da Colmbia por seu eterno amor. Edward Dedico este livro minha esposa Ednia, e ao meu filho, Pedro Lus, que iluminam o meu caminho. Aos meus pais que sempre me apoiaram, e aos meus amigos, que sempre me incentivaram em todos os sentidos. FbioOfereo 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 compreenso e ateno em todos os momentos. Rodolfo3

2. AgradecimentosA DEUS pois, sem Ele, no estaramos aqui e no fariamos nada daquilo quefazemos. Mantenedora do UNIVEM, Fundao de Ensino Eurpides Soares da Rocha, pelocomprometimento com a educao de ensino superior, formando profissionais comexcelncia acadmica e responsabilidade social, e principalmente, por oferecercondies acadmicas integradas realizao de pesquisas, pois entendem que umdos caminhos para se alcanar excelncia acadmica, universitria e profissional.Aos amigos e colegas do UNIVEM (Centro Universitrio Eurpides de Marlia, S.P.)que trabalham no LAS Laboratrio de Arquitetura e Sistemas Computacionais. Emespecial a Cesar Giacomini Penteado e Rodrigo de Almeida Pericini que dividirammomentos de dificuldade e sucesso nos projetos e na vida.Aos amigos Paulo Henrique Trecenti, Luis Fernando Ruivo Gatti, Eduardo EliasLano de Oliveira, Thiago Albuquerque Pinto; cujos trabalhos de Concluso de cursoapresentado no curso de Bacharelado em Cincia da Computao do UNIVEMauxiliaram e, muito, a realizao deste livro.Aos profissionais da rea de computao e informtica: Emiliano da Silva Alves,Vivian Patricia Mascarin e Everson Luiz Vilela Tescaro, que fizeram a suaespecializao em engenharia de software, nos cursos lato-sensu do UNIVEM.Aos alunos do Mestrado em Cincia da Computao e alunos da especializao emredes de computadores e segurana da informao do UNIVEM.A todas as outras pessoas que, mesmo no citadas aqui, deram muito apoio eincentivo, que, sem os quais, esse livro no chegaria sua concluso. 4 3. Sobre os autoresEdward David Moreno professor Doutor no UNIVEM (Centro UniversitrioEurpides de Marlia), e atua tanto no programa de mestrado stricto-sensu em cinciada computao quanto no curso de BCC (Bacharelado em Cincia da Computao).Tambm Professor credenciado no programa de Ps-graduao da Universidade deSo Paulo (USP, So Paulo) e membro do grupo HPCAC (High PerformanceComputer Architecture and Communications) da POLI-USP.O Prof. Moreno finalizou seu Ps-Doutorado na UFSCar (Universidade Federal deSo Carlos), So Carlos/SP, 2000 na rea de Aplicaes em Computao de AltoDesempenho, o seu Doutorado em Eng. Eltrica/POLI-USP, 1998 na rea deComputao de Alto Desempenho e Arquiteturas Avanadas de Computador e o seuMestrado em Eng. Eltrica/POLI-USP, 1994 na rea de Arquitetura deComputadores. Finalmente, a Graduao foi em Eng. Eltrica/Universidad delValle, Cali,Colmbia,1991, com o projeto de Microcontroladores em Gate ArraysCMOS. No ano de 1999, fez uma especializao em Gesto de Projetos, na PUC-Paran.As reas de interesse do Prof. Moreno so: Arquitetura de Computadores,Computao de Alto Desempenho, Avaliao de Desempenho, ComputaoReconfigurvel e Prototipao de Sistemas Digitais.O Prof. Moreno tem escrito e publicado, como autor principal e co-autor,aproximadamente 100 artigos em eventos nacionais e internacionais. Experinciainternacional trabalhando como pesquisador convidado em projetos tais comoNUMAchine Multiprocessor desenvolvido na universidade de Toronto, Canad, eno projeto Large Databases for Multiprocessors desenvolvido em ChalmersUniversity of Technology, Gotebrg, Sucia. Ele participa ativamente nacomunidade internacional, tendo j colaborado como membro de comit deprograma em aproximadamente 50 eventos de renome internacional.Fbio Dacncio Pereira bacharel e Mestre em Cincia da Computao peloUNIVEM (Centro Universitrio Eurpides de Marlia). O projeto do mestrado foi narea de processadores para Segurana. Foi monitor do Laboratrio de Arquitetura eSistemas Computacionais (LAS) e Bolsista de IC da FAPESP (Fundao de Amparo Pesquisa do Estado de So Paulo), no perodo de Agosto 2000 a Dezembro 2002, ebolsista CAPES no ano de 2004. Atualmente professor do UNIVEM. As reas deinteresse so: Circuitos e Sistemas Digitais em FPGAs, Avaliacao de Desempenho eProjeto de Processadores em FPGAs. Tem publicado alguns trabalhos em eventosnacionais e internacionais na rea com nfase no livro recente: Projeto,Implementao e Desempenho de Sistemas Digitais em FPGAs.5 4. Rodolfo Barros Chiaramonte bacharel em Cincia da Computao peloUNIVEM. Atualmente mestrando na mesma instituio, no projeto SistemasInteligentes de Segurana, com bolsa da CAPES. O Rodolfo foi monitor doLaboratrio de Realidade Virtual (LRV) do UNIVEM e Bolsista de IniciaoCientfica, durante 3 anos, da FAPESP (Fundao de Amparo Pesquisa do Estadode So Paulo), no perodo de Maro 2001 a Dezembro 2003. As reas de interesseso: Segurana de dados, Algoritmos de Criptografia, Circuitos e Sistemas Digitaisem FPGAs, Avaliao de Desempenho. Tem publicado alguns trabalhos em eventosnacionais na rea de criptografia e segurana da informao. Alm disso, temparticipado em algumas palestras e workshops sobre os assuntos acimamencionados.6 5. PrefcioObjetivos: Apresentar os principais algoritmos de criptografia utilizados na rea desegurana e respectiva implementao em software (linguagem C e Java) ehardware (VHDL e FPGAs); Explicar alguns cdigos em C, enfatizando nas similaridades e diferenas dese programar usando linguagem C e VHDL (amplamente usada em projetosde hardware); Comparar o desempenho desses algoritmos, tanto na implementao emsoftware quanto em hardware. A anlise comparativa realizada atravs deparmetros tais como: desempenho (velocidade, utilizao de memria,impacto provocado pelo tamanho das chaves, etc.), nvel de segurana,flexibilidade e facilidade de implementao e utilizao; Mostrar a importncia da criptografia implementada em hardware (usando-sede circuitos programveis tais como FPGAs e equipamentos modernos taiscomo HSM e Smart Cards); Facilitar o aprendizado de segurana da informao usando-se de algoritmosde criptografia e a existncia de algumas bibliotecas tais como CryptoAPI,JCA, OpenSSL e JCA; Motivar o aprendizado de projeto de sistemas digitais prprios da rea desegurana de dados, usando-se de tcnicas de prototipao rpida de sistemasde segurana 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 implementao. O livro ensina os aspectos tericos, relacionando-os com a parte prtica (implementao e utilizao), e pode ser lido tanto por iniciantes quanto por profissionais e acadmicos que queiram se aprofundar mais no assunto. Resumo: O texto est composto de 17 captulos, organizados em quatro partes: Parte I: Conceitos Bsicos de Segurana, Software e Hardware Parte II: Algoritmos Clssicos de Criptografia 7 6. Parte III: Algoritmos Modernos de CriptografiaParte IV: Ferramentas e Dispositivos Modernos de SeguranaEm termos gerais, a proposta do livro apresenta de maneira clara os principaisalgoritmos de criptografia (tanto simtricos e assimtricos), explicando de maneirasimples o respectivo funcionamento, sem necessidade de aprofundamentos nosconceitos matemticos.O livro destaca a implementao 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. Alm de apresentar osnveis de segurana e aplicaes, apresenta-se a velocidade com que cada algoritmopode executar para diferentes tipos de arquivos de diferentes aplicaes.Mais uma grande diferena, a apresentao das potencialidades oferecidas porimplementaes em hardware desses algoritmos. Assim, ele apresenta uma novatcnica de projetar sistemas digitais em uma tecnologia moderna chamada decircuitos programveis (FPGAs). Para isso se mostram os conceitos da linguagemprpria para hardware (VHDL) e como se projetam esses circuitos especficos decriptografia a partir das respectivas implementaes em software (a maioria emlinguagem C e alguns outros algoritmos em Java). Finalmente, se faz umacomparao entre as respectivas implementaes em Software e Hardware.Finalmente, no ltimo captulo, o dcimo stimo (17) se oferecem informaes deuma ferramenta, chamada pelos autores de WEBCRY, e se disponibiliza um site naInternet com algumas informaes pblicas para que os leitores se atualizem arespeito dos algoritmos discutidos no livro, assim como a possibilidade de acessaralguns cdigos e exemplos fornecidos no livro e a utilizao da ferramentaWEBCRY criada pelos autores. Dessa maneira, os leitores e usurios podemexercitar a parte prtica do livro e vivenciar por si mesmos os conhecimentos,experincias, resultados e os efeitos de desempenho desses algoritmos.Pblico alvo:Estudantes e Professores da rea da Computao e Informtica (tais como Cincia daComputao, Sistemas de Informao, Engenharia da Computao, EngenhariaEltrica, Engenharia Eletrnica), interessados em adquirir e aprofundar osconhecimentos na rea de segurana, do ponto de vista de algoritmos, sistemasdigitais e desempenho.Profissionais que estejam realizando ps graduao lato sensu ou stricto sensu, nasreas de segurana de dados e da informao.8 7. Engenheiros e profissionais atuando na rea de segurana de dados e da tecnologiada informao, com interesse em programao, no projeto de circuitos e sistemasdigitais, e principalmente, no desempenho de sistemas de segurana.Informaes adicionais, tais como cdigos da maioria dos algoritmos apresentadosno livropodem ser acessados no linkhttp://www.novateceditora.com.br/downloads.php, assim como detalhes daferramenta WEBCRY.9 8. Parte IConceitos Bsicos de Criptografia, Software eHardware A primeira parte divide-se em cinco captulos, e feita uma introduo sobre o que ser abordado no livro, como ele est estruturado e como pode ser lido. Este captulo apresenta o assunto e motiva a necessidade do estudo de VHDL e a possvel insero de FPGAs como alternativa de projeto de circuitos e sistemas digitais, enfatiza principalmente os aspectos de implementao 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 experincia na rea, como possvel criar solues criptogrficas. Esse algoritmo no muito seguro, mas uma verso didtica que facilita o entendimento de vrios conceitos relacionados segurnaa de dados.10 9. Captulo 1Conceitos de Segurana de Dados e CriptografiaNeste primeiro captulo, Conceitos de Segurana de Dados e Criptografia, seapresenta e enfatiza a necessidade da segurana de dados nos tempos modernos,focalizando principalmente o papel dos algoritmos de criptografia e as vantagens dese ter conhecimento dos conceitos, implementao e, principalmente, do seudesempenho.1.1 A CriptografiaA criptografia pode ser entendida como um conjunto de mtodos e tcnicas paracifrar ou codificar informaes legveis atravs de um algoritmo, convertendo umtexto original em um texto ilegvel, sendo possvel atravs do processo inversorecuperar as informaes originais (SIMON, 1999), ver processo na figura 1.1.Figura 1.1 Esquema geral para cifragem de um texto.Pode-se criptografar informaes basicamente atravs de cdigos ou de cifras. Oscdigos protegem as informaes trocando partes da informao por cdigospredefinidos. Sendo que todas as pessoas autorizadas a ter acesso umadeterminada informao devem conhecer os cdigos utilizados.As cifras so tcnicas nas quais a informao cifrada atravs da transposio e/ousubstituio das letras da mensagem original. Assim, as pessoas autorizadas podemter acesso s informaes originais conhecendo o processo de cifragem. As cifrasincluem o conceito de chaves, que ser apresentado em outra seo.Os principais tipos de cifra so: as cifras de transposio que a mistura doscaracteres da informao original. Por exemplo, pode-se cifrar a palavra"CRIPTOGRAFIA" e escrev-la "RPORFACITGAI"; e as cifras de substituio queatravs de uma tabela de substituio predefinida possvel trocar ou substituir umcaractere ou caracteres de uma informao. 11 10. 1.1.1 Uma Breve Histria da Criptografia A criptografia to antiga quanto a prpria escrita, j estava presente no sistema de escrita hieroglfica dos egpcios. Os romanos utilizavam cdigos secretos para comunicar planos de batalha. Com as guerras mundiais e a inveno do computador, a criptografia cresceu incorporando complexos algoritmos matemticos. A criptologia faz parte da histria humana porque sempre houve frmulas secretas e informaes confidenciais que no deveriam cair no domnio pblico ou na mo 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 idia de substituir algumas palavras ou trechos de texto. Caso o documento fosse roubado, o ladro no encontraria o caminho que o levaria ao tesouro e morreria de fome perdido nas catacumbas da pirmide. Em 50 a.C, Jlio Csar usou sua famosa cifra de substituio para cifrar (criptografar) comunicaes governamentais. Para compor seu texto cifrado, Csar alterou letras desviando-as em trs posies; A se tornava D, B se tornava E, e etc. s vezes, Csar reforava seu mtodo de criptografar mensagens substituindo letras latinas por gregas. O cdigo de Csar o nico da antigidade que usado at hoje. Atualmente qualquer cifra baseada na substituio cclica do alfabeto denomina-se de cdigo de Csar. Apesar da sua simplicidade (ou exatamente devido a ela), esta cifra foi utilizada pelos oficiais sulistas na Guerra de Secesso americana e pelo exrcito russo em 1915. Em 1901, iniciou-se a era da comunicao sem fio. Apesar da vantagem de uma comunicao de longa distncia 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 mquinas de cifragem eletro-mecnicas baseadas em rotores que giram a cada caracter cifrado (TKOTZ, 2003). Entre 1933 e 1945, a mquina Enigma que havia sido criada por Arthur Scherbius foi aperfeioada at se transformar na ferramenta criptogrfica mais importante da Alemanha nazista. O sistema foi quebrado pelo matemtico polons Marian Rejewski que se baseou apenas em textos cifrados interceptados e numa lista de chaves obtidas atravs de um espio (KAHN, 1967). A seguir, outros acontecimentos relacionados utilizao da criptografia (TKOTZ, 2003): 1943 - Mquina Colossus projetada para quebrar cdigos. 1969 - James Ellis desenvolve um sistema de chaves pblicas e chaves privadas separadas. 1976 Diffie-Hellman um algoritmo baseado no problema do logaritmo discreto, o criptosistema de chave pblica mais antigo ainda em uso.12 11. 1976 - A IBM apresenta a cifra Lucifer ao NBS (National Bureau of Standards) oqual, aps avaliar o algoritmo com a ajuda da NSA (National Security Agency),introduz algumas modificaes (como as Caixas S e uma chave menor) e adota acifra como padro 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 comearam a discutircomo criar um sistema de chave pblica prtico. Ron Rivest acabou tendo umagrande idia e a submeteu apreciao dos amigos: era uma cifra de chave pblica,tanto para confidencialidade quanto para assinaturas digitais, baseada na dificuldadeda fatorao de nmeros 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 divulgao de pesquisas cientficas.Maiores detalhes desta organizao podem ser obtidos no link www.acm.org.1990- Xuejia Lai e James Massey publicam na Suia "A Proposal for a New BlockEncryption Standard" ("Uma Proposta para um Novo Padro de Encriptao deBloco")(LAI, 1990), o assim chamado IDEA (International Data EncryptionAlgorithm), para substituir o DES. O algoritmo IDEA utiliza uma chave de 128 bitse emprega operaes adequadas para computadores de uso geral, tornando asimplementaes em software mais eficientes (SCHNEIER, 1996).1991- Phil Zimmermann torna pblica sua primeira verso de PGP (Pretty GoodPrivacy) como resposta ao FBI, o qual invoca o direito de acessar qualquer textoclaro da comunicaes entre usurios que se comunicam atravs de uma redecomunicao digital. O PGP oferece uma segurana alta para o cidado comum e,como tal, pode ser encarado como um concorrente de produtos comerciais como oMailsafe da RSADSI. Entretanto, o PGP especialmente notvel porque foidisponibilizado como freeware e, como resultado, tornou-se um padro mundialenquanto que seus concorrentes da poca continuaram absolutamente desconhecidos(BROWN, 2000).1994- Novamente o professor Ronald L. Rivest, autor dos algoritmos RC2 e RC4includos na biblioteca de criptografia BSAFE do RSADSI, publica a proposta doalgoritmo RC5 na Internet. Este algoritmo usa rotao dependente de dados comosua operao no linear e parametrizado de modo que o usurio possa variar otamanho do bloco, o nmero de estgios e o comprimento da chave.1994- O algoritmo Blowfish, uma cifra de bloco de 64 bits com uma chave de at448 bits de comprimento, projetado por Bruce Schneier (SCHNEIER, 1993).1997- O PGP 5.0 Freeware amplamente distribudo para uso no comercial.1997- O cdigo DES de 56 bits quebrado por uma rede de 14.000 computadores(CURTIN, 1998).13 12. 1998 - O cdigo DES quebrado em 56 horas por pesquisadores do Vale do Silcio (DESKEY, 2001). 1999 - O DES quebrado em apenas 22 horas e 15 minutos, atravs da unio 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 padro de uma chave secreta de cifragem, escolhido entre 15 candidatos. Este novo padro foi criado para substituir o algoritmo DES, cujo tamanho das chaves tornou- se insuficientes para conter ataques de fora bruta (MESERVE, 1999). O algoritmo Rijndael cujo o nome uma abreviao 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 computao com vnculo em centros de pesquisa, universidades e empresas motivam-se e comeam a pesquisar novas formas de implementar algoritmos e solues de segurana. Surge assim, uma onda de pesquisas e desenvolvimentos voltados a realizar otimizaes dessas primeiras implementaes e uma dessas tendncias a implementao em hardware. Assim, este livro, mostra a importncia de se implementar alguns desses algoritmos criptogrficos em hardware, em especial, atravs do uso da tecnologia de circuitos programveis (FPGAs), a qual acessvel e diminui de forma significativa os tempos e custos associados realizao de projetos e prottipos. Os computadores so a expresso maior da era digital, marcando presena em praticamente todas as atividades humanas. Da mesma forma com que revolucionaram a informao, tambm influenciaram na criptologia: por um lado ampliaram seus horizontes, por outro, tornaram a criptologia quase que indispensvel. Na prxima seo apresenta-se a importncia da criptografia.1.1.2 A Importncia da Criptografia Nesta seo discutida a importncia da criptografia, a segurana dos sistemas operacionais e porque se deve utilizar este recurso contra intrusos que desejam acessar informaes alheias. A segurana eletrnica nunca foi to amplamente discutida: casos de violao de contas bancrias, acesso a informaes sigilosas, invaso e destruio de sistemas so cada vez mais comuns. Informaes so transmitidas com mais eficincia 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 no autorizada tiver acesso a dados pessoais como: contracheque, saldo bancrio, faturas do carto de crdito, diagnsticos de sade e senhas bancrias ou de credito automtico. No caso de empresas, os danos podem ser de maior magnitude, atingindo a organizao e os prprios funcionrios. Dados estratgicos da empresa, previso de venda, detalhes tcnicos de produtos, resultados 14 13. de pesquisas e arquivos pessoais so informaes valiosas que caso alguma empresaconcorrente tiver acesso de forma indevida, pode acarretar em srios problemas.A Internet um ambiente que viabiliza principalmente a comunicao, a divulgao,a pesquisa e o comercio eletrnico. Em 1999 havia mais de 100 milhes de usuriosda Internet nos Estados Unidos. No final de 2003 esse nmero alcanou 177 milhesnos Estados Unidos e 502 milhes no mundo todo (BURNETT, 2002). O comrcioeletrnico emergiu como um novo setor da economia norte-americana, sendoresponsvel por cerca de U$100 bilhes em vendas durante 1999, em 2003 ocomrcio eletrnico excedeu a U$1 trilho. Ao mesmo tempo, o Computer SecurityInstitute (CSI) constatou um aumento de crimes cibernticos, 55% dos entrevistadosna pesquisa informaram atividades maliciosas relacionadas com pessoas da prpriaorganizao. Ciente disso pode-se ter certeza que as empresas em expanso precisamde produtos, mecanismos e solues de segurana (BURNETT, 2002).No muito tempo atrs a segurana era uma questo de se trancar uma porta ou umcofre. Atualmente as informaes geralmente no esto armazenadas somente empapis e sim em banco de dados. Como proteger essas informaes? O que ossistemas operacionais (SO) oferecem para essa proteo ?Os sistemas operacionais oferecem um sistema de proteo atravs de permisses(ver figura 1.2). Isto , atravs do SO possvel criar usurios com diferentes nveisde acesso para as informaes contidas em um computador. Tal acesso implementado via procedimento de login. Assim quando um determinado usuriofazer login em um computador ter acesso s pastas e arquivos designados pelo seunvel de permisso, isto , se um usurio tiver restries para o acesso de pasta,arquivos e programas, este no conseguir acessar.Os cadastros de usurios e as permisses so concedidos pelo superusurio ouadministrador do sistema. Este responsvel pelo gerenciamento do sistema,inclusive pode permitir que outros usurios possam alterar algumas permisses,como de uma pasta pessoal. Independente das restries impostas, com o login desuperusurio pode-se ter acesso a todas as funes do sistema.A questo como o sistema operacional sabe que a pessoa que est acessando osistema realmente o superusurio? O SO concede a permisso atravs de um nomede usurio e senha, normalmente os nomes de usurios administradores so root,su ou administrador e infelizmente sabe-se que as tcnicas para superar essasdefesas so amplamente conhecidas (BURNETT, 2002). A seguir so descritosalguns dos principais ataques.15 14. Figura 1.2 Configurao da permisso de acesso a uma pasta no Windows 2000.Ataque contra senhas: Vrios sistemas operacionais vm com um nome de usurioe senhas predefinidas e muitas vezes o mesmo login utilizado para realizar vriastarefas como: criao de usurios, manuteno e backup, instalao de programasassim por diante.No uma boa prtica utilizar o login predefinido. A utilizao da senha predefinidaou de uma senha derivada de uma data de aniversrio ou qualquer dado pessoal,pode facilitar o ataque ao sistema. Se o invasor no tiver a competncia paradescobrir a senha, este poder utilizar aplicativos, chamados de software de crackingde senha. Esses softwares testam exaustivamente as possibilidades de senhas atencontrar uma vlida, se a senha for fraca, em questo de minutos o invasor teracesso ao sistema.Seria interessante dar preferncia a diferentes senhas de superusurio para cadafuno do sistema, pois se o sistema for invadido, o intruso no ter acesso a todasas informaes do sistema, mesmo acessando com um login de superusurio. Umaoutra maneira para invadir e recuperar os dados do sistema desviando do controlede permisses do SO, chamado de ataque de recuperao de dados.Ataques de recuperao de dados: O sistema operacional organiza as informaesem arquivos e diretrios para que o usurio possa fazer um acesso rpido a umadeterminada informao. Contudo, os dados assim como o controle de acesso a essesdados so bits eletrnicos. Assim, possvel fazer uma leitura destes bits no comoarquivos de texto ou de nmeros e sim como bits, independente do SO. Estes ataques16 15. desviam do SO e capturam os bits brutos, reconstituindo-os em arquivos originais, burlando os controles de permisso do SO. Ataque de reconstruo de memria: Freqentemente, o material sigiloso est armazenado na memria do computador. Quando executar um programa, este ser armazenado em uma rea da memria principal e o SO marca esta rea como indisponvel. Quando o programa finalizado, o SO apenas disponibiliza a rea sem sobrescrev-la. O invasor simplesmente aloca a memria liberada e examina o que sobrou (BURNETT, 2002). Como impedir que um invasor tenha acesso a informaes privadas? Para impedir o acesso a informao privada pode-se utilizar a proteo por criptografia. A proteo por criptografia uma soluo prtica para proteger informaes sigilosas, independente do algoritmo criptogrfico utilizado sempre ocorrer uma transformao de um texto legvel em um ilegvel. Mesmo que o invasor obtenha o contedo de um arquivo, este ser ilegvel. Para ter acesso informao original, o invasor ter que resolver um problema matemtico de difcil soluo. A criptografia pode adicionar tambm maior segurana ao processo de identificao de pessoas, criando identidades digitais fortes. De modo algum a criptografia a nica ferramenta necessria para assegurar a segurana de dados, nem resolver todos os problemas de segurana. um instrumento entre vrios outros. Alm disso, a criptografia no prova de falhas. Toda criptografia pode ser quebrada e, sobretudo, se for implementada incorretamente, ela no agrega nenhuma segurana 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 so conceituados nesta seo. O ato de transformar um texto legvel (texto claro, texto original, texto simples) em algo ilegvel (cifra, texto cifrado, texto cdigo) chamado de encriptar (codificar, criptografar, cifrar). A transformao inversa chamada de decriptar (decodificar, decriptografar, decifrar). O algoritmo de criptografia uma seqncia de procedimentos que envolvem uma matemtica 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 situaes o que diferencia a velocidade de execuo e a probabilidade de erros. Existem vrios algoritmos de criptografia, neste livro apresenta-se especificamente o DES, AES, RC5, IDEA e RSA, MD5 e SHA-1, pois so os mais utilizados atualmente, alm do ALPOS (um algoritmo didtico criado pelos autores). Alm do algoritmo, utiliza-se uma chave. A chave na criptografia computadorizada um nmero ou um conjunto de nmeros. A chave protege a informao cifrada. Para decrifrar o texto cifrado o algoritmo deve ser alimentado com a chave correta, 17 16. que nica. Na figura 1.3 tem-se a ilustrao do esquema geral de cifragemutilizando chave.Figura 1.3 Esquema geral de cifragem com chave.Na histria da criptografia sempre ficou evidente que no existe um algoritmo queno possa ser quebrado (descoberto ou solucionado). Com a criptografiacomputadorizada, atualmente, os algoritmos so divulgados comunidade e o sigilodas informaes garantido apenas pela chave. Isto significa que se algumdescobrir a chave para decifrar uma determinada informao, todas as outrasinformaes cifradas com este algoritmo ainda estaro protegidas, por terem chavesdiferentes.J um algoritmo criptogrfico que no utiliza o recurso de chaves para cifrar asinformaes pode levar a um efeito cascata perigoso. Se este algoritmo for quebrado,todas as informaes cifradas com ele estaro desprotegidas, pois o que garante osigilo das informaes seria o prprio algoritmo. Assim, toda criptografia moderna ecomputadorizada opera com chaves.A criptografia desde seu inicio, foi desenvolvida para impedir que um invasor ouintruso, algum que est tentando acessar informaes sigilosas tivesse sucesso. Hpouco tempo a criptografia era amplamente utilizada para proteger informaesmilitares. Atualmente protege uma gama maior de diferentes informaes. Osinvasores no necessariamente s querem acessar informaes sigilosas, mastambm desativar sites, excluir informaes de uma pessoa ou empresa, danificarsistemas em geral.O estudo sobre a quebra de sistemas criptogrficos conhecido como anlisecriptogrfica. Semelhante ao invasor, o criptoanalista procura as fraquezas dosalgoritmos. O criptgrafo desenvolve sistemas de criptografia. importante que acomunidade de criptografia conhea as fraquezas, pois os invasores tambm estoprocurando por elas. quase certo que os invasores no iro publicar suasdescobertas para o mundo (BURNETT, 2002). 18 17. 1.1.4 Algoritmos de Bloco e Fluxo Pode-se classificar os algoritmos de criptografia atravs tratamento dado as informaes que sero 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 sero cifrados ou decifrados. Quando o texto no completa o nmero de bytes de um bloco, este preenchido com dados conhecidos (geralmente valor zero 0) at completar o nmero de bytes do bloco, cujo tamanho j predefinido pelo algoritmo sendo usado. A forma mais comum de preenchimento determinar o nmero 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 so utilizados os modos de realimentao. O modo mais comum de realimentao a cifragem de blocos por encadeamento (Cipher Block Chaining - CBC). Neste modo realizada uma operao de XOR do bloco atual de texto simples com o bloco anterior de texto cifrado. Para o primeiro bloco no h bloco anterior de texto cifrado assim, faz-se uma XOR com um vetor de inicializao. Este modo no adiciona nenhuma segurana extra. Apenas evita o problema citado da cifra de bloco. Portanto, os algoritmos de blocos processam os dados como um conjunto de bits, so os mais rpidos e seguros para a comunicao digital. Tem ainda como vantagem que os blocos podem ser codificados fora de ordem, o que bom para acesso aleatrio, alm de ser resistente a erros, uma vez que um bloco no depende do outro. Entretanto, possuem como desvantagem que se a mensagem possui padres repetitivos nos blocos, o texto cifrado tambm o apresentar, o que facilita o servio do criptoanalista. Outra desvantagem que um bloco pode ser substitudo por outro modificando a mensagem original. Os algoritmos de fluxo criptografam (cifram) a mensagem bit a bit, em um fluxo contnuo, sem esperar que se tenha um bloco completo de bits. tambm chamado de criptografia em Stream de dados, onde a criptografia se d atravs de uma operao XOR entre o bit de dados e o bit gerado pela chave. A tabela 1.1 mostra algumas recomendaes para selecionar o tipo de algoritmo que dever ser usado em uma determinada aplicao.Tabela 1.1 - Escolhendo um algoritmo por aplicao (BURNETT, 2002)19 18. CifragemAplicao Comentrios RecomendadaBanco deA interoperabilidade com um outro software no uma Bloco Dadosquesto, mas necessrio reutilizar as chaves.Ganha-se interoperabilidade em todos os pacotes de e-mail E-mail AESutilizando o AES padro.A velocidade extremamente importante, cada conexoSSL RC4 pode ter uma nova chave. Assim, na prtica, a maioria dosnavegadores e servidores possuem o RC4.A interoperabilidade no uma questo, porm cada Criptografia de Blocoarquivo pode ser cifrado com a mesma chave e entoArquivosproteger essa chave.1.1.5 Vrus ou Informao Cifrada Fernando de la Cuadra, editor tcnico internacional da empresa Panda Software, empresa de software de segurana e antivrus, aponta em seu artigo vantagens e problemas da criptografia atual (CUADRA, 2003). Enviar uma mensagem cifrada por correio eletrnico traz vantagens tanto para o emissor como para o receptor. A confidencialidade est praticamente assegurada. Ningum que no conhea a chave utilizada na cifragem poder entender as informaes da mensagem. Assim, pode-se enviar todo tipo de informao com um bom nvel de segurana, e praticamente estar salvo de tericas interceptaes na comunicao. Mas quem intercepta uma comunicao? Em principio imagina-se que seja um hacker, um espio ou qualquer outro usurio que queira acessar as informaes da comunicao, mas tambm pode ser um antivrus fazendo uma verificao. Um antivrus sempre tentar impedir o ataque de um vrus, para isso, este examinar a mensagem enviada pelo correio eletrnico. O que pode acontecer que dentro do contedo de uma mensagem cifrada pode existir um vrus e o antivrus no o identificar. Ou ainda, o antivrus pode identificar uma mensagem cifrada como sendo um vrus e esta mensagem poder ser excluda. Atualmente 90% dos vrus esto espalhados pela Internet. Sendo assim, o mais lgico a instalao de antivrus nos firewalls, proxys, etc. Mas se o vrus estiver em uma mensagem de correio eletrnico cifrada, at o melhor antivrus poder falhar em seu objetvo de proteger as informaes. E os usurios que receberem a mensagem cifrada, inconscientemente, sero infectados (CUADRA, 2003). Em definitivo, ningum dvida que os sistemas de criptografia sejam uma ferramenta que fornece segurana s comunicaes, mas podem ter uma deficincia: podem esconder vrus. Uma soluo para evitar que o vrus cifrado entre em uma determinada companhia ou organizao, deveria ser uma proteo efetiva que bloqueia as mensagens cifradas no autorizadas, antes de chegar aos usurios finais (CUADRA, 2003).20 19. 1.2 Importncia da Chave ou senha O termo chave vem do fato de que o nmero 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 residncias, empresas e etc. de modo a proteger o patrimnio de um determinado usurio. Assim, de forma similar acontece com a criptografia, onde para proteger a informao de um determinado usurio (armazenada em arquivos de computador), se deve instalar uma fechadura (algoritmo de criptografia). Para operar a fechadura precisa-se da famosa chave ou senha (nmero secreto), a qual permite cifrar ou decifrar a informao 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 informao em forma legvel, necessrio inserir a mesma chave ou alguma que esteja relacionada com aquela que foi usada no processo anterior, e executar a operao 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 prdio pode abrir sua entrada, apenas a chave correta usada em criptografia pode cifrar ou decifrar os dados. Na criptografia de chave simtrica, a chave que utilizada para criptografar os dados a mesma chave que utilizada para decifr-los. Na criptografia assimtrica, usa-se outra chave que possui um valor relacionado com essa primeira chave, na seo 1.3 apresenta-se mais detalhes sobre criptografia simtrica e assimtrica. Toda criptografia moderna e computadorizada opera com chaves. Por que uma chave necessria? Por que no criar um algoritmo que no necessite de uma chave?. Se os invasores podem entender o algoritmo, eles podem recuperar os dados secretos simplesmente executando o algoritmo. Uma primeira soluo seria manter o algoritmo em segredo, mas essa abordagem tem vrios problemas. Um deles , supondo que no seja possvel manter o algoritmo em segredo, os invasores sempre quebram o algoritmo. Isso no seria possvel se houvesse especialistas em criptografia que desenvolvem seus prprios algoritmos, mas neste caso tambm deve-se confiar que a empresa ou usurio 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 informaes mesmo que os usurios de sistemas computacionais saibam como ele funciona. Neste segundo aspecto, aparece a importncia dos algoritmos com chave, e principalmente, a relevncia da chave. As chaves aliviam a preocupao com o algoritmo utilizado no esquema de criptografia. Em termos computacionais para proteger os dados com uma chave, necessrio proteger apenas a chave, algo que mais fcil de ser feito do que proteger21 20. um algoritmo. Alm disso, se utilizar chaves para proteger os segredos, possvelutilizar diferentes chaves para proteger diferentes segredos. Isso significa que sealgum descobrir (quebrar) uma das chaves, os outros segredos ainda poderoestar seguros. Se alguma informao depender somente de um algoritmo secreto,algum invasor que quebre esse segredo obter acesso a todas as informaescontidas em um determinado sistema computacional.Assim, as chaves so muito importantes em criptografia. Esse o princpio deKerckhoffs, que diz da relevncia do espao de chaves, muito mais seguro umsistema onde se conhece o algoritmo de criptografia, do que o espao de chaves.Manter em segredo as chaves, e supondo conhecer o algoritmo usado, gera-se umsistema incondicional e computacionalmente seguro.Esse princpio ainda vlido, por vrias razes (KERCKHOFFS, 1983). Osinvasores podem deduzir um algoritmo sem ajuda nenhuma. Na histria dacriptografia nunca algum foi capaz de manter um algoritmo criptogrfico emsegredo. Eles sempre o descobrem.Um exemplo disso que durantes as guerras, os espies sempre encontrarammaneiras de descobrir o algoritmo, seja ele originado de uma operao matemticaou de uma mquina. Eles o roubam ou fazem com que algum o revele (por meio dechantagem, extorso ou pelo uso de tcnicas de anlise criptogrfica). Agentessempre descobriam o algoritmo ou obtinham uma cpia da mquina.Por exemplo, na Segunda Guerra Mundial, os soldados poloneses capturaram amquina alem Enigma, logo no incio da guerra. A Enigma era uma mquina decriptografia que o exrcito alemo utilizava. Os aliados (isto , os britnicos) foramcapazes de quebrar o cdigo mais facilmente porque tinham a posse dessa mquina.Alternativamente, os analistas criptogrficos descobrem o algoritmo. Na SegundaGuerra Mundial, decifradores de cdigo dos Estados Unidos foram capazes dedeterminar o funcionamento interno das mquinas codificadas japonesas sem ter aposse de uma dessas mquinas.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 comunicao segura da WEB (World Wide Web).Mas a empresa que o criou, a RSA Data Security, nunca tornou pblico ofuncionamento interno do algoritmo RC4. Esse segredo tinha interesses financeiros eno de segurana. A empresa esperava que mantendo-o em segredo ningum mais oimplementaria e o comercializaria. Em 1994, hackers annimos divulgaram oalgoritmo na Internet. Acredita-se que eles provavelmente o descobriram usando umdepurador de linguagem assembly, aps terem tido acesso a uma cpia do cdigo-objeto.Se um sistema criptogrfico estiver baseado no hardware, os engenheiros abrem-no eexaminam as partes internas. Em 1998, David Wagner e Ian Goldherg, nessa poca 22 21. alunos graduados da Universidade da Califrnia em Berkeley, abriram um telefonecelular digital, supostamente seguro, e quebraram seu cdigo.s vezes possvel manter um algoritmo em segredo por um perodosuficientemente longo para que ele seja eficaz, mas aps certo tempo algum acabadescobrindo-o.A segunda razo de relevncia da senha, mais do que o algoritmo usado refere-se assuntos comerciais. Empresrios e usurios sempre desejam saber como umdeterminado software de interesse foi realizado. Caso a empresa no revele ossegredos de implementao e construo, atravs de tcnicas de reengenhariareversa sobre um software pode-se conhecer detalhes da sua criao e respectivaimplementao.Soma-se a isso o fato que somente pessoas que adquiriram o produto podem secomunicar entre si. Isso enviabiliza a comunicao com pessoas que no adquiriramou compraram o algoritmo de um mesmo fornecedor. Dessa maneira, comoresultado, os algoritmos devem ser padronizados e isso significa que eles devem serpblicos.Se algum quiser utilizar a criptografia, necessrio empregar um dispositivo dehardware ou um programa de software. Portanto, se faz necessrio adquirir oproduto em algum lugar. Assim, como os usurios podem ter acesso a ele, osinvasores tambm tm. Desse modo, possveis invasores podem ir mesma fonte econseguir suas prprias cpias. Isso faz com que os algoritmos devem serdisponibilizados, e melhor ento, deve-se cuidar da chave.Uma outra razo para cuidar da chave e no do algoritmo refere-se ao fato que possvel construir sistemas criptogrficos no qual o algoritmo completamenteconhecido, mas seguro pois os possveis invasores precisam conhecer a chave paradescobrir as informaes. Estes sistemas so mais seguros do que aqueles que notem chave, e somente confiam no segredo de no se conhecer o algoritmo.Quando os algoritmos se tornam pblicos, os analistas criptogrficos e osprofissionais da rea de computao tm uma chance de examinar suas fraquezas. Seum algoritmo for vulnervel, pode optar por no utiliz-lo. Caso contrrio, pode tercerteza de que os dados esto seguros. Por outro lado, se um algoritmo for mantidoem segredo, os analistas no sero capazes de encontrar nenhuma fraqueza que elepossa ter, assim no se sabe se ele ou no vulnervel.1.2.1 Como Gerar a ChaveEm um sistema criptogrfico de chave simtrica, a chave formada por um conjuntode caracteres. Ele pode ser um nmero qualquer, ou uma seqncia de caracteres 23 22. alfanumricos (letras e smbolos especiais) contanto que tenha um tamanho correto eadequado quele que o algoritmo criptogrfico selecionado permitir.Geralmente, aconselha-se que a chave seja formada por nmeros ou caracteresalfanumricos sem coerncia nenhuma entre si, pois assim fica mais dficil descobr-la (ou em termos criptogrficos, quebr-la). A chave deve ser, dentro do possvel,selecionada de forma aleatria. Para os criptgrafos, valores aleatrios sosimplesmente conjuntos de nmeros que passam em testes estatsticos dealeatoriedade e no so repetveis.Com esse intuito, de gerar chaves, h vrias tcnicas usadas. Entre elas destaca-se autilizao de sistema geradores de nmero aleatrios (GNA) ou RNG (RandomNumber Generator). Esses dispositivos funcionam agrupando nmeros de diferentestipos de entradas imprevisveis como a medio da desintegrao espontnea deradioatividade, o exame das condies atmosfricas ou o clculo de minsculasvarincias na corrente eltrica. Esses nmeros passam por testes de aleatoriedade. Sesolicitar um segundo grupo de nmeros, a nova seqncia ser completamentediferente, isto , nunca receber a mesma seqncia novamente. Isso ocorre porque asada baseada em uma entrada que sempre est mudando.Esses nmeros podem ser obtidos utilizando algoritmos chamados de GNPAgeradores de nmeros pseudo-aleatrios (pseudo-random number generators -PRNGs). Se um desses algoritmos for utilizado para gerar alguns milhares denmeros e aplicar testes estatsticos, os nmeros passariam no teste de aleatoriedade.O que torna esses nmeros pseudo-aleatrios, e no aleatrios, que eles sorepetveis. Se for instalado o mesmo GNPA em um outro computador, os mesmosresultados podero 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 emcada evento de utilizao (chamada de semente). Assim, gerar-se- dados diferentes,pois alterando a entrada, a sada ser alterada. A gerao aleatria dessa chave estassociada a dois parmetros importantes: velocidade de gerao e entropia, as quaisesto intimamente relacionadas com o tamanho da chave.1.2.2 Importncia do Tamanho da ChaveSe os invasores puderem descobrir qual a chave usada na cifragem dos dados, elespodem decifrar a mensagem enviada e obter os dados contidos nela.Um mtodo, conhecido como ataque de fora bruta, consiste em tentar todas aspossveis chaves at que a correta seja identificada. Ele funciona dessa maneira.Suponha que a chave seja um nmero entre 0 e 1.000.000 (um milho). O invasorpega o texto cifrado e alimenta o algoritmo de criptografia junto com a supostachave de valor 0. O algoritmo realiza seu trabalho e produz um resultado. Se osdados resultantes parecerem razoveis, 0 provavelmente a chave correta. Se forum texto sem sentido, 0 no a verdadeira chave. Nesse caso, ele tenta outrovalor, por exemplo 1 e em seguida 2, 3, 4 e assim por diante. 24 23. Um algoritmo simplesmente realiza os passos, independentemente da entrada. Eleno tem nenhuma maneira de saber se o resultado que ele produz o correto. Mesmose o valor for um prximo da chave, talvez errado em apenas 1, o resultado serum texto sem sentido.Assim, necessrio 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 seqncia de entrada e sada, com valores supostos dechaves, um mtodo consiste em criar programas que faam esses passos atdescobrirem alguma informao.Normalmente, esse processo requer pouco tempo para testar uma chave. Assim,pode-se escrever um programa que verifique vrias chaves por segundo.Computacionalmente isso torna possvel descobrir qualquer chave, somente precisa-se de tempo.Interessante perceber que esse tempo de procura est fortemente associado aotamanho da chave. Chaves criptogrficas so medidas em bits. O intervalo depossveis respostas para identificar uma chave est em correspondncia ao nmero2TC, onde TC o Tamanho da Chave em bits.Assim, tendo-se uma chave de 2 bits significa que o intervalo de possveis valores de 0 at 22 = 4. Uma chave de 40 bits significa que o intervalo dos possveis valores de 0 at aproximadamente 1 trilho (240). Uma chave de 56 bits de 0 ataproximadamente 72 quatrilhes (256). O intervalo de uma chave de 128 bits togrande que mais fcil apenas dizer que ela uma chave de 128 bits (nmero depossibilidades igual a 2128).Cada bit adicionado ao tamanho da chave dobrar o tempo requerido para um ataquede fora bruta. Se uma chave de 40 bits levasse trs 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 nmero de chavespossveis, (lembrar que esse nmero est em funo de 2TC). Assim ao adicionar umbit o nmero de chaves possveis dobrado. Dobrando o nmero de chavespossveis, o tempo mdio que um ataque de fora bruta leva para encontrar a chavecorreta tambm dobrado.Portanto, para se ter maior segurana, isto tornar o trabalho de um determinadoinvasor mais difcil, deve-se escolher uma chave maior. Chaves mais longassignificam maior segurana. A tabela 1.2 mostra o impacto de se aumentar otamanho da chave e o respectivo tempo de quebrar a chave usando ataque por forabruta, assim como a respectiva estimativa de custo (em dolres) da tecnologianecessria para encontrar a chave. Pode-se ver que tendo mais recursos disponveis(em tecnologia e portanto maior custo em dolres) possvel diminuir o tempo de seencontrar uma determinada chave. No obstante seja possvel achar a chave, htamanhos de chave que inviabilizam esse fato, pois demandaria muito tempo.25 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 fora bruta (SCHNEIER, 1996)Tamanho da Chave (bits) Custo U$40 5664 80 112 128 100000 2s35 horas 1 ano 70000 anos 10 e 14 10 e 19 1 Milho 200 ms 3,5 h 37 dias 7000 anos 10 e 1310 e 18 10M Milhes 20s21 m 4 dias700 anos 10 e 12 10 e 17 100 M2 ms 2m9h70 anos10 e 11 10 e 16 1G 200 us 13 s1h7 anos 10 e 10 10 e 15 10G20 us 1 s5,4 m 245 anos 10 e 910 e 14 100G 2 us100 ms 32 s24 anos10 e 810 e 13 1T 0,2 us 10 ms 3 s 2,4 anos 10 e 710 e 12 10T0,02 us 1 ms 300 ms6 horas10 e 610 e 11Importante lembrar que o poder computacional dobra a cada 1.5 anos, e que o tempode existncia do universo, segundo os ltimos estudos cientficos, est em torno de10 10e10 anos. Assim, chega-se concluso que sempre possvel decrifrar umadeterminada mensagem, pois sempre ser possvel descobrir a chave: basta testartodas as chaves possveis somente uma questo de tempo. Mas pode demorarmais que o tempo de durao do Universo (SCHNEIER, 1996).Ento, qual o tamanho mximo que uma chave deve ter? Com o passar dos anos, oRSA Laboratories props alguns desafios. A primeira pessoa ou empresa a quebraruma mensagem em particular ganharia um prmio em dinheiro. Alguns desafiosforam testes do tempo de um ataque de fora bruta. Em 1997, uma chave de 40 bitsfoi quebrada em trs horas e uma chave de 48 bits durou 280 horas. Em 1999, aElectronic Fronter Foundation encontrou uma chave de 56 bits em 24 horas. Emcada um dos casos, pouco mais de 50% do espao de chave foi pesquisado antes de achave ser encontrada.Em todas essas situaes, 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 no seria capaz de reunir afora de centenas de computadores e talvez no possua uma mquinaespecificamente construda para quebrar um algoritmo em particular. Para a maioriados invasores, essa a razo pela qual o tempo que leva para quebrar a chave quasecertamente seria significativamente mais alto. Por outro lado, se o invasor fosse umaagncia governamental de inteligncia com grandes recursos, a situao seriadiferente.26 25. Pode-se pensar em situaes ainda mais crticas. Suponha que examinar 1% doespao 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 entoo tempo de pesquisa. Os resultados so mostrados na tabela 1.3, onde se percebeque o impacto e observaes realizadas para os dados da tabela 1.2, so tambmaplicavis.Tabela 1.3 Tempo gasto para quebra de chaves (BURNETT, 2002)Bits 1% do Espao da Chave 50% do Espao da Chave56 1 segundo1 minuto57 2 segundos 2 minutos58 4 segundos 4 minutos64 4,2 minutos4,2 horas72 17,9 horas 44,8 dias80 190,9 dias 31,4 anos90 535 anos 321 sculos108 140.000 milnios8 milhes de milnios128 146 bilhes de milnios 8 trilhes de milniosAtualmente, 128 bits o tamanho de chave simtrica mais comumente utilizado. Sea tecnologia avanar e os invasores de fora bruta puderem melhorar esses nmeros(talvez eles possam reduzir para alguns anos o tempo das chaves de 128 bits), entoprecisar-se- de chaves de 256 bits ou ainda maiores.Assim, considerando que a tecnologia sempre est avanando, ento teremos deaumentar repetidas vezes o tamanho das chaves. Ento, com o passar do temposempre ser necessrio aumentar o tamanho das chaves. bom lembrar queaumentar a chave significa tambm em aumentar o tempo cifragem e decifragem.Por isso recomnedvel ter cuidados com a escolha do tamanho da chave. Assim, possvel pensar que pode chegar um um momento quando precisaremos de umachave to grande que ela se tornar muito difcil de lidar. No momento atual, econsiderando os conhecimnentos adquiridos na rea de segurana, 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 milnios para pesquisar 1% do espao de chavede uma chave de 512 bits. De acordo com a teoria do Big Bang, o tempo decorridodesde a criao do universo menor de 224 milnios. Em outras palavras, 27 26. altamente improvvel que a tecnologia v to longe para forar a utilizar chaves que sejam muito grandes (BURNETT, 2002). Apesar do ataque de fora bruta precisar de muito tempo, principalmente quando a chave possui um tamanho razovel, h outros ataques que exploram as fraquezas nos algoritmos criptogrficos, e tendem a diminuir o tempo do ataque. Por esse motivo, no momento recomenda-se usar chaves relativamente longas, superiores a 128 bits. J aplicaes comerciais e financeiras (por exemplo, transaes bancrias), necessrio que a chave seja maior que 128 bits. Isso significa que usurio comum que tente fazer um ataque de fora bruta, precisar de muito tempo para ter uma invaso considerada bem sucedida.1.3 Criptografia de Chave Simtrica e Assimtrica Na criptografia de chave simtrica os processos de cifragem e decifragem so feitos com uma nica chave, ou seja, tanto o remetente quanto o destinatrio usam a mesma chave. Em algoritmos simtricos, como por exemplo o DES (Data Encription Standard), ocorre o chamado "problema de distribuio de chaves". A chave tem de ser enviada para todos os usurios autorizados antes que as mensagens possam ser trocadas. Isso resulta num atraso de tempo e possibilita que a chave chegue a pessoas no autorizadas. A criptografia assimtrica contorna o problema da distribuio de chaves atravs do uso de chaves pblicas. A criptografia de chaves pblicas foi inventada em 1976 por Whitfield Diffie e Martin Hellman a fim de resolver o problema da distribuio de chaves. Neste novo sistema, cada pessoa tem um par de chaves chamadas: chave pblica e chave privada. A chave pblica divulgada enquanto que a chave privada deixada em segredo. Para mandar uma mensagem privada, o transmissor cifra a mensagem usando a chave pblica do destinatrio pretendido, que dever usar a sua respectiva chave privada para conseguir recuperar a mensagem original. Atualmente, um dos mecanismos de segurana mais usados a assinatura digital, a qual precisa dos conceitos de criptografia assimtrica. A assinatura digital uma mensagem que s uma pessoa poderia produzir, mas que todos possam verificar. Normalmente autenticao se refere ao uso de assinaturas digitais: a assinatura um conjunto inforjvel 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 tambm 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 pblica o RSA (Rivest-Shamir-Adelman). Sua maior desvantagem a sua capacidade de canal limitada, ou seja, o nmero de bits de mensagem que ele pode transmitir por segundo (BURNETT, 2002). A figura 1.4 ilustra o funcionamento da criptografia simtrica e assimtrica. Observa-se que existem duas chaves na criptografia assimtrica.28 27. Figura 1.4 Modelo simtrico e assimtrico de criptografia.Aps analisar o exposto acima, pode-se ficar em dvida de qual modelo utilizar:simtrico ou assimtrico. Pois bem, devido a isso foi desenvolvido um modelohbrido, ou seja, que aproveitasse as vantagens de cada tipo de algoritmo. Oalgoritmo simtrico, por ser muito mais rpido, utilizado no ciframento damensagem em si, enquanto o assimtrico, embora lento, permite implementar adistribuio de chaves e alguns a assinatura digital.Ento, os algoritmos criptogrficos podem ser combinados para a implementaodos trs mecanismos criptogrficos bsicos: o ciframento, a assinatura digital e ohashing, sendo que estes ltimos dois conceitos ainda sero descritos e analisadosem captulos posteriores. Estes mecanismos so componentes de protocoloscriptogrficos, embutidos na arquitetura de segurana dos produtos destinados aocomrcio eletrnico. Estes protocolos criptogrficos, portanto, provm os serviosassociados criptografia que viabilizam o comrcio eletrnico.Descreve-se abaixo alguns exemplos de protocolos que empregam sistemascriptogrficos hbridos.O IPSec o padro de protocolos criptogrficos desenvolvidos para o IPv6. Realizatambm o tunelamento de IP sobre IP. Prometido como futuro padro para todas asformas de VPN Virtual Private Network(MAIA, 1999).O SSL e TLS oferecem suporte de segurana criptogrfica para os protocolos NTTP,HTTP, SMTP e Telnet. Permitem utilizar diferentes algoritmos simtricos, messagedigest e mtodos de autenticao e gerncia de chaves para algoritmos assimtricos(MAIA, 1999). O SSL, que significa Security Socket Layer, o protocolo mais29 28. conhecido em transaes via WEB e hoje domina esse mercado, estando presenteprincipalmente em vendas on-line envolvendo carto de crdito. Foi criado pelaNetscape, sendo o padro livre para uso pessoal e empresarial. Ressalte-senovamente o nvel de segurana deste protocolo, o qual assegura a inviolabilidadedas vendas on-line com carto de crdito (GEEK, 2002).Pode-se citar tambm 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 esforode um consrcio de empresas, tendo inclusive como um dos lderes a Microsoft, paraadicionar segurana a mensagens eletrnicas no formato MIME. Acredita-se que oS/MIME dever se estabelecer no mercado corporativo, enquanto que o PGP atuarno mundo do e-mail pessoal (MAIA, 1999).J o SET um conjunto de padres e protocolos para realizar transaes financeirasseguras, como as realizadas com cartes de crdito na internet. Oferece um canalseguro entre todos os envolvidos na transao, bem como autenticidade eprivacidade entre as partes envolvidas.A especificao X.509 define o relacionamento entre as autoridades de certificao.Baseado em criptografia de chave pblica e assinatura digital (MAIA,1999).Pode-se ento traar um comparativo entre os modelos vistos (criptografia simtricae assimtrica), conforme se mostra na Tabela 1.4.Tabela 1.4 Comparao entre os Tipos de Algoritmos de Criptografia Criptografia SimtricaCriptografia AssimtricaRpidaLentaGerncia e distribuio das Gerncia e distribuio simpleschaves complexaNo oferece assinatura digital. Oferece assinatura digitalA tabela 1.5, mostra detalhes dos algoritmos simtricos mais conhecidos pelacomunidade da rea de segurana da informao e criptografia. Tabela 1.5 Caractersticas dos Algoritmos Simtricos mais Conhecidos30 29. AlgoritmoTipoTamanho ChaveTamanho Bloco DESBloco56 64Triple Des (2 chaves) Bloco11264Triple DES (3 chaves) Bloco16864IDEABloco12864 Blowfish Bloco 32 a 44864 RC5Bloco 0 a 204032, 64, 128CAST-128Bloco 40 a 12864 RC2Bloco 0 a 102464 RC4Stream (fluxo) 0 a 256 -- Rijndael (AES) Bloco 128, 192, 256128, 192, 256MARSBloco Varivel128 RC6Bloco Varivel128 SerpentBloco Varivel128 TwofishBloco 128, 192, 256 128Nessa tabela possvel observar que a maioria dos algoritmos criptogrficos modernos, osmais usados na atualidade, so baseados no sistema de cifrar as informaes 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 varivel (ver situao 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 criptogrficos de chave-pblica permitem a sua utilizao para gerar o que se denomina de assinaturas digitais. O algoritmo RSA um destes algoritmos, assim, alm da operao normal de cifrar com a chave-pblica e decifrar com a chave-privada, permitir que, cifrando-se com a chave-privada, o processo de decifrar com a chave-pblica resulta na recuperao da mensagem (BUCHMANN, 2001). Obviamente esta forma de uso no assegura o sigilo da mensagem, uma vez que qualquer um pode decifrar a mensagem, dado que a chave-pblica de conhecimento pblico. Entretanto, se esta operao resulta na mensagem esperada pode-se ter a certeza de que somente o detentor da correspondente chave-privada poderia ter realizado a operao de cifragem. Assim, uma assinatura digital o criptograma resultante da cifrao de um determinado bloco de dados (documento) pela utilizao da chave-privada de quem assina em um algoritmo assimtrico. A verificao da assinatura feita decifrando- se o criptograma (assinatura) com a suposta chave-pblica correspondente. Se o resultado for vlido, a assinatura considerada vlida, ou seja, autntica, uma vez que apenas o detentor da chave privada, par da chave pblica utilizada, poderia ter gerado aquele criptograma. Na figura 1.5 ilustra-se este procedimento. 31 30. Figura 1.5 Gerao de Assinatura Digital de um documento (BURNETT, 2002).Nesta figura um usurio de nome Fbio assina um documento, cifrando-o com suachave-privada e enviando tanto o documento original quanto a assinatura para umoutro usurio chamado de Edward. Este usurio verifica a assinatura decifrando-acom a chave-pblica de Fbio (de conhecimento pblico), e comparando o resultadocom o documento recebido. Se estiverem de acordo, a assinatura confere, casocontrrio a assinatura considerada invlida, significando que ou no foi Fbioquem assinou, ou o documento foi adulterado aps a assinatura. Interessanteobservar que este procedimento capaz de garantir tanto a origem (autenticao doemissor), tendo em vista que supostamente somente Fbio conhece sua chaveprivada e portanto somente ele capaz de gerar uma assinatura que possa serverificada com sua chave-pblica, como tambm a integridade do documento, jque, se o mesmo for alterado, a verificao da assinatura ir indicar isto, caso tenhavindo efetivamente do pretenso emissor.Usualmente, face ineficincia computacional dos algoritmos assimtricos, osmtodos para assinatura digital empregados na prtica no assinam o documento quese deseja autenticar em si, mas uma smula deste, obtida pelo seu processamentoatravs do que se denomina uma funo de Hashing. Uma funo de hashing umafuno criptogrfica que gera uma sada de tamanho fixo (geralmente 128 a 256 bits)independentemente do tamanho da entrada. A esta sada se denomina de hash damensagem (ou documento ou o que quer que seja a entrada). Segundo Burnett(BURNETT, 2002), para ter utilidade criptogrfica, a funo de hashing deve ser: Simples (eficiente, rpido) se computar o hash de dada mensagem; Impraticvel se determinar a entrada a partir de seu hash; Impraticvel se determinar uma outra entrada que resulte no mesmo hash de uma dada entrada; Valores de hash possveis so estatisticamente equiprovveis. 32 31. A tabela 1.6 mostra as caractersticas dos algoritmos de hashing mais conhecidos pela comunidade da rea de segurana de dados. Tabela 1.6 Caractersticas 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) 649GOST-Hash256 11NAVAL (3 passos) Varivel168NAVAL (4 passos) Varivel118NAVAL (5 passos) Varivel95MD4 Message Digest 4 128 236MD5 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 75SNEFRU (4 passos)128 48SNEFRU (8 passos)128 23 Nessa tabela possvel observar que a maioria dos algoritmos de hashing usam um tamanho de hash fixo, com destaque para 128 e 160 bits, que so os tamanhos mais usados pela comunidade. Os algoritmos mais conhecidos pela comunidade acadmica e com utilidade comercial so o algoritmo SHA, MD4 e MD5. J os outros, como o nome indicado na tabela 1.6 sugere, pertencem a aplicaes governamentais e de uso privado, como por exemplo aplicaes militares e navais.1.5 Consideraes Finais do Captulo Ainda no contexto da viso atual de criptografia, pode-se elencar outros fatores que impulsionam seu estudo e evoluo: A tecnologia de protocolos de rede tornar a Internet uma rota vulnervel invases e furto de informaes; Crackers de todas as partes esto dispostos a destruir at mesmo os maisslidos negcios on-line e possuem armas intelectuais para isso; E-commerce comeou a perder adeptos, por ser suscetvel a fraudes emoperaes envolvendo transferncia de dinheiro e cartes de crdito; Correio eletrnico tambm no seguro; Diversos servios on-line aproveitam a ingenuidade do internauta parainvadir um microcomputador e obter dados pessoais; Pelo computador muito mais fcil e provvel a aplicao de mtodos demonitoramento;33 32. Ainda existe um sentimento de insegurana quando se realiza alguma transao comercial via internet, fazendo com que no seja aproveitado todo o potencial neste tipo de comrcio; A invaso de mquinas/sistemas e roubo de informao uma realidade, deixando de lado a imagem fictcia e cinematogrficas; Os algoritmos de criptografia ainda so um conceito distante da grande massa de usurios, se apresentado como algo abstrato e intangvel.Por esse motivo, este livro alm de apresentar de forma clara os algoritmoscriptogrficos mais usados no momento, preocupa-se em apresentar dados dedesempenho: tempos de execuo do processo de cifragem e decifragem, tempo deprocessamento de alguns algoritmos simtricos (DES, AES, IDEA, RC5) eassimtricos como o RSA e funes de hashing (MD5 e SHA-1), quandoimplementados em software (usando-se da linguagem C e alguns deles em Java) ehardware (em circuitos programveis FPGAs atravs da linguagem especial paradescrio de sistemas digitais, conhecida como VHDL).Um dos pontos de interesse ao leitor destacar que ao aumentar o tamanho da chaveaumenta o nvel de segurana, mas aumenta-se tambm 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. Captulo 2Conceitos de Circuitos Programveis FPGAs eVHDL e VHDL Neste captulo, apresentam-se conceitos bsicos de circuitos programveis FPGAs e da linguagem de descrio de hardware VHDL. Inicialmente apresentada a estrutura interna e roteamento dos circuitos FPGAs, discutindo conceitos de reconfigurao. Posteriormente tem-se a definio das formas de descrever um circuito utilizando VHDL, exemplificando cada metodologia de descrio de hardware, onde a sintaxe da linguagem baseada no padro VHDL93. Alm de descrever os principais elementos que compem a estrutura da linguagem como: operadores, expresses, atributos, tipos da linguagem, declarao de entidades e arquiteturas, expresses concorrentes, expresses seqenciais, processos, comando seqenciais e outros.2.1 Estrutura Interna de um FPGA Como ponto de partida para este captulo, faz-se necessrio apresentar a estrutura interna de circuitos programveis FPGAs, mostrando algumas arquiteturas desta tecnologia, bem como discutir os conceitos de reconfigurao e roteamento desses circuitos. No objetivo deste livro explorar em profundidade detalhes da tecnologia FPGA, mas apenas alguns conceitos bsicos quse sero importantes para entender o projeto e desempenho dos algoritmos criptogrficos implementados atravs desta tecnologia. A figura 2.1 apresenta quatro principais arquiteturas internas utilizadas em circuitos programveis: matriz simtrica, sea-of-gates, row-based e PLD hierrquico. J a figura 2.2 mostra que um FPGA (Field Programmable Gate Arrays) so circuitos programveis compostos de CLBs, switch boxes, IOBs e canais de roteamento.35 34. Figura 2.1 Arquiteturas interna de circuitos programveis FPGA.A arquitetura sea-of-gates um circuito composto por transistores ou blocos lgicosde baixa complexidade. A vantagem dessa arquitetura a grande disponibilidade deportas lgicas por rea. Porm, como no h uma rea dedicada para o roteamento, necessrio que o mesmo seja feito sobre as clulas, muitas vezes inutilizando reasdisponveis para implementao de uma determinada lgica.Nos circuitos de arquitetura row-based os blocos lgicos esto dispostoshorizontalmente. Existe uma rea dedicada de roteamento localizada entre as linhasde blocos lgicos. As arquiteturas row-based e sea-of-gates originaram-se dasmetodologias de projeto de ASICs, standard-cells e gate-array.A arquitetura tipo PLD hierrquico constitudo por uma matriz de blocos lgicos,denominados logic arrays blocks, sendo interligados atravs do recurso deroteamento conhecido como matriz programvel de interconexo (PIA). Esse tipo dedispositivo dito hierrquico, porque os blocos lgicos podem ser agrupados entresi.A arquitetura tipo matriz simtrica flexvel no roteamento, pois possui canaisverticais e horizontais. 36 35. Figura 2.2 Dispositivos internos de um FPGA. J a figura 2.2 mostra que um FPGA (Field Programmable Gate Arrays) so circuitos programveis compostos de CLBs, switch boxes, IOBs e canais de roteamento.2.2 Roteamento e Configurao de um FPGA Nesta seo so discutidos conceitos bsicos de roteamento e reconfigurao de circuitos programveis e reconfigurveis FPGAs. O roteamento a interconexo entre blocos lgicos atravs de uma rede de camadas de metal. As conexes fsicas entre os blocos lgicos so feitas com transistores controlados por bits de memria (PIP) ou por chaves de interconexo (switch matrix). Eis alguns elementos bsicos utilizados na malha de roteamento da famlia XC4000 da Xilinx: Conexes globais: estas formam uma rede de interconexo em linhas e colunas ligadas atravs de chaves de interconexo. Esta rede circunda os blocos lgicos (CLBs) e os blocos de E/S (IOBs). Matriz de conexo (Switch Matrix): so chaves de interconexo que permitem o roteamento entre os blocos lgicos atravs das conexes globais. Conexes diretas: interligam CLBs vizinhos e permitem conectar blocos com menor atraso, pois no utilizam recursos globais de roteamento. Linhas longas: so conexes que atravessam todo o circuito sem passar pelas matrizes de conexo e so utilizadas para conectar sinais longos. A exigncia de alto poder de processamento e o surgimento de novas aplicaes, promovem uma constante busca por alternativas e arquiteturas que visem melhorar a performance dos computadores, especialmente em aplicaes de tempo real. Uma destas alternativas a reconfigurao.37 36. Acoplando um dispositivo programvel FPGA a um processador de propsito geral (GPP), torna-se possvel a explorao eficiente do potencial das chamadas arquiteturas reconfigurveis. Arquiteturas reconfigurveis permitem ao projetista a criao de novas funes, e possibilita a execuo de operaes com um nmero consideravelmente menor de ciclos do que necessrio em GPPs. Em uma arquitetura reconfigurvel, so desnecessrias muitas das unidades funcionais complexas usualmente encontradas em processadores de propsito geral. Os mtodos de reconfigurao de um dispositivo programvel e reconfigurvel podem ser classificados como:Reconfigurao total: a forma de configurao, onde o dispositivoreconfigurvel inteiramente alterado. Tambm tratada apenas comoconfigurao.Reconfigurao parcial: a forma de configurao que permite que somenteuma parte do dispositivo seja reconfigurada. A reconfigurao parcial podeser: no-disruptiva, onde as partes do sistema que no esto sendoreconfiguradas permanecem completamente funcionais durante o ciclo dereconfigurao; ou disruptiva, onde a reconfigurao parcial afeta outras partesdo sistema, necessitando de uma parada no funcionamento do mesmo.Reconfigurao dinmica: tambm chamada de run-time reconfiguration(RTR), on-the-fly reconfiguration ou in-circuit reconfiguration. Todas essasexpresses podem ser traduzidas tambm como reconfigurao em tempo deexecuo. Nesse tipo de reconfigurao no h necessidade de reiniciar ocircuito ou remover elementos reconfigurveis para programao.Reconfigurao extrnseca: reconfigura parcialmente o sistema, mas somenteconsiderando cada FPGA que o compe como unidade atmica dereconfigurao.Reconfigurao intrnseca: reconfigura parcialmente cada FPGA quecompe o sistema. A partir desta seo apresentam-se conceitos bsicos da linguagem VHDL utilizados nas implementaes dos circuitos digitais bsicos descritos no captulo 3, os quais sero teis para entender o projeto em hardware dos algoritmos criptogrficos focados neste livro.2.3 VHDL - Descrio Estrutural e Comportamental Na linguagem VHDL (VHSIC Hardware Description Language) existem duas formas para a descrio de circuitos digitais: a estrutural e a comportamental. A forma estrutural indica os diferentes componentes que constituem o circuito e suas respectivas interconexes. Desta maneira pode-se especificar um circuito e saber como seu funcionamento. 38 37. A forma comportamental consiste em descrever o circuito pensando no seucomportamento e funcionamento e no na sua estrutura. Essa metodologia facilita adescrio de circuitos onde a estrutura interna no est disponvel, mas o seufuncionamento e comportamento podem ser interpretados. Assim, esse tipo dedescrio vem se desenvolvendo a cada dia. A descrio comportamental pode-sedividir em duas metodologias, dependendo do nvel de abstrao: a descrioalgortmica e de fluxo de dados.Na descrio de um circuito utilizando a linguagem VHDL, comum ter-se trechosimplementados de maneira comportamental e estrutural, sendo de responsabilidadedo projetista a utilizao correta dos mtodos de implementao de circuitos emVHDL.2.4 Exemplo dos Estilos de Descries em VHDLA figura 2.3 representa um comparador de 1 bit simplificado. Este ser descrito nosdois estilos de descrio de circuitos digitais em VHDL, estrutural ecomportamental. Onde U1, U2 so os componentes do circuito, L1 uma linha deconexo entre os componentes, e E1, E2 e S so as portas de entrada e sada docircuito.Figura 2.3 - Representao de um comparador de 1 bitO funcionamento do comparador de 1 bit simplificado, onde os valores lgicos daportas de entrada E1 e E2 sero comparados. Se E2 for menor que E1 a sada Srecebe o valor lgico 1, caso contrrio, 0. Este exemplo do comparador de 1 bitser utilizado para demostrar as formas de descrio de circuito digitais em VHDLnas sees 2.4.1, 2.4.2 e 2.4.3.2.4.1 Descrio AlgortmicaA descrio algortmica um conjunto de passos que descreve de formacomportamental o circuito digital projetado. Em primeiro lugar, deve-se descrever aentidade do circuito, onde so definidas as portas de entrada e sada. A entidade(entity) independente do mtodo de descrio de circuitos digitais sempre se mantma mesma. J a arquitetura (architecture) responsvel pela descrio do circuito demaneira estrutural ou comportamental. Neste caso, o comparador de 1 bit (figura2.3) descrito na seqncia, de maneira comportamental, aplicando o princpioalgortmico. 39 38. Comparador de 1 Bit (Descrio Algortmica)-- definio da entidade: portas de E/Sentity comp isport (e1,e2: in bit;s: out bit);end comp;-- definio da arquitetura: descrio da lgica interna do circuitoarchitecture comp_alg of comp isbeginprocess (e1,e2)beginif e2 < e1 then s := /= >= , s => s1); u2:inv PORT MAP (e=>, s => s1);2.12 Pacotes em VHDL (Package) O pacote ou PACKAGE uma coleo de tipos, constantes, subprogramas, etc. Esta a maneira de agrupar elementos relacionados. Os pacotes esto divididos em duas partes, a declarao e corpo, onde o corpo contm definies de procedimentos e funes que podem ser omitidos, se no h nenhum desses elementos para declarar. A forma geral para a declarao de um pacote : PACKAGE nomeIS declaraes END [PACKAGE [nome];PACKAGE]PACKAGE PACKAGE BODY nome IS BODY declaraes , subprogramas, etc. END [PACKAGE BODY [nome];PACKAGE BODY] Uma vez declarado o pacote, os elementos podem ser referenciados atravs do nome do pacote. Pode-se referenciar apenas um elemento ou todos, bastando declarar no programa principal quais os elementos do pacote que estaro disponveis. A seguir, um exemplo utilizando PACKAGE. PACKAGE cpu ISSUBTYPE byte IS bit_vector (7 DOWNTO 0);FUNCTION inc (valor: interger) RETURN interger; END cpu; PACKAGE BODY cpu ISFUNCTION inc (valor: interger) RETURN interger ISVARIABLE result: integer;BEGINResult