Implementaç˜Ao Em Software De Algoritmos De Resumo Criptográfico
Total Page:16
File Type:pdf, Size:1020Kb
Instituto de Computa¸c~ao Universidade Estadual de Campinas Implementa¸c~aoem software de algoritmos de resumo criptogr´afico Thomaz Eduardo de Figueiredo Oliveira i FICHA CATALOGRÁFICA ELABORADA PELA BIBLIOTECA DO IMECC DA UNICAMP Bibliotecária: Maria Fabiana Bezerra Müller – CRB8 / 6162 Oliveira, Thomaz Eduardo de Figueiredo OL4i Implementação em software de algoritmos de resumo criptográfico/Thomaz Eduardo de Figueiredo Oliveira-- Campinas, [S.P. : s.n.], 2011. Orientador : Julio César López Hernández. Dissertação (mestrado) - Universidade Estadual de Campinas, Instituto de Computação. 1.Criptografia. 2.Hashing (Computação). 3.Arquitetura de computadores. I. López Hernández, Julio César. II. Universidade Estadual de Campinas. Instituto de Computação. III. Título. Título em inglês: Software implementation of cryptographic hash algorithms Palavras-chave em inglês (Keywords): Cryptography Hashing (Computer science) Computer architecture Área de concentração: Teoria da Computação Titulação: Mestre em Ciência da Computação Banca examinadora: Prof. Dr. Julio César López Hernández (IC – UNICAMP) Prof. Dr. Ricardo Dahab (IC – UNICAMP) Dr. José Antônio Carrijo Barbosa (CEPESC-ABIN) Data da defesa: 16/06/2011 Programa de Pós-Graduação: Mestrado em Ciência da Computação ii Instituto de Computa¸c~ao Universidade Estadual de Campinas Implementa¸c~aoem software de algoritmos de resumo criptogr´afico Thomaz Eduardo de Figueiredo Oliveira1 16 de junho de 2011 Banca Examinadora: • Prof. Dr. Julio C´esarL´opez Hern´andez IC/Universidade Estadual de Campinas (Orientador) • Prof. Dr. Ricardo Dahab IC/Universidade Estadual de Campinas • Dr. Jos´eAnt^onioCarrijo Barbosa CEPESC/Ag^enciaBrasileira de Intelig^encia • Prof. Dr. Paulo L´ıciode Geus (Suplente) IC/Universidade Estadual de Campinas • Prof. Dr. Routo Terada (Suplente) IME/Universidade de S~aoPaulo 1Suporte financeiro de: CNPq (processo 133033/2009-0) 2009{2011. v Agradecimentos Meus agradecimentos v~aoprimeiramente para minha fam´ılia: Ana Beatriz, Silma e Se- basti~ao,que mesmo distantes fisicamente, me apoiaram de todas as formas poss´ıveis neste caminho. Agrade¸coao orientador Julio L´opez pelo excelente trabalho em me guiar por um ambiente at´eent~aodesconhecido por mim. Devo agradecer tamb´ema todos os membros do LCA que me auxiliaram durante a pesquisa, al´emda Unicamp e o CNPq pelo apoio estrutural e financeiro. Por fim, n~aoposso de deixar de lembrar dos amigos de todas as partes, estejam eles pr´oximosou distantes, que propiciaram momentos de descontra¸c~aot~aonecess´ariospara a realiza¸c~aodeste trabalho. vii Meu filho pequeno me pergunta: devo aprender matem´atica? Para qu^e,penso em dizer. Que dois peda¸cosde p~aos~aomais do que um Voc^elogo notar´a. Meu filho pequeno me pergunta: devo aprender franc^es? Para qu^e,penso em dizer. Esse imp´erioest´ano fim. E Basta voc^eesfregar a m~aona barriga e gemer: Logo lhe compreender~ao. Meu filho pequeno me pergunta: devo aprender hist´oria? Para qu^e,penso em dizer. Aprenda a enfiar sua cabe¸cana terra Talvez ent~aovoc^eescape. Sim, aprenda matem´atica,digo. Aprenda franc^es,aprenda hist´oria! Bertolt Brecht ix Resumo Os algoritmos de resumo criptogr´aficos~aouma importante ferramenta usada em muitas aplica¸c~oespara o processamento seguro e eficiente de informa¸c~oes. Na d´ecadade 2000, s´eriasvulnerabilidades encontradas em fun¸c~oes de resumo tradicionais, como o SHA-1 e o MD5, levou a comunidade a repensar o desenvolvimento da criptan´alisedestes algo- ritmos e projetar novas estrat´egias para a sua constru¸c~ao. Como resultado, o instituto NIST anunciou em novembro de 2007 um concurso p´ublicopara o desenvolvimento de um novo padr~aode fun¸c~oesde resumo, o SHA-3, contando com a participa¸c~aode autores de todo o mundo. Esta disserta¸c~aofoca nos aspectos da implementa¸c~aoem software de alguns algoritmos submetidos no concurso SHA-3, buscando compreender a forma como os autores desenvolveram a quest~aodo custo computacional de seus projetos em diver- sas plataformas, al´emde entender os novos paradigmas de implementa¸c~aointroduzidos pela tecnologia presente nos processadores atuais. Como consequ^encia,propusemos novas t´ecnicasalgor´ıtmicaspara a implementa¸c~aoem software de alguns algoritmos, como o Luffa e o Keccak, levando aos mesmos melhorias significativas de desempenho. xi Abstract Hash algorithms are an important tool of cryptography used in many applications for se- cure and efficient information processing. During the 2000 decade, serious vulnerabilities found at some traditional hash functions like SHA-1 and MD5 prompted the cryptography community to review the advances in the cryptanalysis of these algorithms and their de- sign strategies. As a result, on November, 2007, NIST announced a public competition to develop a new cryptographic hash function, the SHA-3, which involved competitors throughout the world. This work focuses on the software implementation aspects of some of the SHA-3 submitted algorithms, seeking to comprehend how the authors resolved the computational cost issues at distinct platforms and to understand the new paradigms introduced by the present processors technology. As a consequence, we proposed new algorithmic techniques for the software implementation of Luffa and Keccak hash algo- rithms, improving their performance significantly. xiii Sum´ario Agradecimentos vii Resumo xi Abstract xiii 1 Introdu¸c~ao1 1.1 Defini¸c~oesdos s´ımbolos . .2 1.2 Organiza¸c~aodo documento . .2 2 Fun¸c~oesde resumo criptogr´afico3 2.1 Introdu¸c~ao. .3 2.1.1 Propriedades . .3 2.1.2 Aplica¸c~oes. .4 2.2 An´alisee ataques . .7 2.3 Fun¸c~oesde resumo iteradas . .9 2.3.1 Merkle-Damg˚ard . .9 2.3.2 HAIFA . 10 2.3.3 Esponja . 11 2.4 Fun¸c~oesde resumo paralelas . 12 2.5 Classifica¸c~oesde fun¸c~oesde resumo . 13 2.5.1 Baseadas em cifras de bloco . 13 2.5.2 Fun¸c~oesde resumo dedicadas . 15 2.5.3 Baseadas em primitivas aritm´eticas . 21 2.6 MACs: Message Authentication Codes . 23 2.6.1 HMAC . 24 2.6.2 CMAC . 24 3 O padr~aoSHA 27 3.1 Introdu¸c~ao. 27 xv 3.2 SHA-1 . 28 3.2.1 Descri¸c~ao . 28 3.2.2 Ataques . 29 3.2.3 Implementa¸c~oes. 31 3.3 SHA-2 . 31 3.3.1 Descri¸c~ao . 31 3.3.2 Ataques . 33 3.3.3 Implementa¸c~oes. 34 3.4 O concurso SHA-3 . 34 3.4.1 Primeira rodada . 37 3.4.2 Segunda rodada . 37 3.4.3 Fase final . 37 4 Arquiteturas 39 4.1 Intel x86 / Intel 64 . 39 4.1.1 Breve hist´oria. 39 4.1.2 Ambiente . 41 4.1.3 Pipeline ................................. 43 4.1.4 SSE . 44 4.2 Atmel AVR ATmega 8 . 45 4.2.1 Ambiente . 46 4.2.2 Instru¸c~oesimportantes . 47 5 Fun¸c~oesesponja 49 5.1 Introdu¸c~ao. 49 5.2 Keccak . 53 5.2.1 Descri¸c~ao . 53 5.2.2 An´alises . 57 5.3 Luffa . 58 5.3.1 Descri¸c~ao . 58 5.3.2 An´alises . 62 5.4 Shabal . 62 5.4.1 Descri¸c~ao . 62 5.4.2 Implementa¸c~ao . 65 5.4.3 An´alises . 68 6 Implementa¸c~aoeficiente do algoritmo Keccak 69 6.1 Aspectos Gerais . 69 6.1.1 Plataforma SSE 128 bits ........................ 69 xvi 6.1.2 Plataforma 64 bits ........................... 70 6.1.3 Plataforma 32 bits ........................... 70 6.1.4 Plataforma 8 bits ............................ 71 6.1.5 Hist´orico. 72 6.2 T´ecnicaproposta . 72 6.2.1 Implementa¸c~ao bitslice ......................... 73 7 Implementa¸c~aoeficiente do algoritmo Luffa 75 7.1 Aspectos gerais . 75 7.1.1 Plataforma SSE 128 bits ........................ 76 7.1.2 Plataforma 64 bits ........................... 76 7.1.3 Plataforma 32 bits ........................... 76 7.1.4 Plataforma 8 bits ............................ 77 7.1.5 Hist´orico. 78 7.2 x86 . 79 7.2.1 Perfect Shuffle ............................. 79 7.2.2 T´ecnicaproposta . 80 7.2.3 Otimiza¸c~oes na linguagem Assembly ................. 84 7.2.4 Resultados experimentais . 87 7.3 OpenMP . 90 7.4 AVR ATmega 8 . 91 7.4.1 Implementa¸c~aoB´asica . 91 7.4.2 Implementa¸c~ao Perfect Shuffle ..................... 92 8 Ultima´ rodada do concurso SHA-3 95 8.1 BLAKE . 96 8.1.1 Descri¸c~ao . 96 8.1.2 Coment´arios . 98 8.2 Grøstl . 99 8.2.1 Descri¸c~ao . 99 8.2.2 Coment´arios . 102 8.3 JH........................................ 103 8.3.1 Descri¸c~ao . 103 8.3.2 Coment´arios . 106 8.4 Keccak . 107 8.4.1 Descri¸c~ao . 107 8.4.2 Coment´arios . 107 8.5 Skein . 108 8.5.1 Descri¸c~ao . 108 xvii 8.5.2 Coment´arios . 111 8.6 Desempenho . 112 9 Conclus~oes 115 9.1 Trabalhos futuros . 116 Bibliografia 117 xviii Lista de Tabelas 2.1 Seguran¸cadas fun¸c~oesde resumo . .8 3.1 Cronograma concurso SHA-3 . 35 3.2 Algoritmos que n~aoavan¸carampara a fase final . 37 3.3 Algoritmos que n~aoavan¸carampara a segunda fase . ..