Baixe o app para aproveitar ainda mais
Prévia do material em texto
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIAS E TECNOLOGIA DO CEARÁ CURSO SUPERIOR DE ENGENHARIA DE TELECOMUNICAÇÕES FORNECENDO SEGURANÇA NO CORREIO ELETRÔNICO USANDO PGP MATHEUS FREIRE E SILVA DO NASCIMENTO FORTALEZA, NOVEMBRO DE 2014 ii MATHEUS FREIRE E SILVA DO NASCIMENTO TÍTULO DA MONOGRAFIA Esta Monografia foi julgada adequada para obtenção do Título de "Engenheiro de Telecomunicações", aprovada em sua forma final pelo Departamento de Telemática do Instituto Federal de Educação, Ciências e Tecnologia do Ceará - IFCE. ___________________________________________ Edson da Silva Almeida, PhD. Coordenador do Curso Banca Examinadora: ________________________ Nídia Glória da Silva Campos, Msc. Orientador ________________________ José Wally Mendonça Menezes, PhD. ________________________ Moacyr Regys, Msc. iii AGRADECIMENTOS Agradeço primeiramente a Deus, por tudo que tem providenciado em minha vida; aos meus pais que sempre me ajudaram e estão sempre ao meu lado me apoiando; a professora Nídia pelas orientações e paciência que tanto contribuíram para o desenvolvimento desse trabalho; ao professor Wally pelos seus conselhos; ao professor Natarajan Meghanathan por ter me aceito em sua disciplina de Computer Security na Jackson State University, incentivando o meu desenvolvimento na área de computação segura. iv SUMÁRIO Lista de Figuras Lista de Tabelas Lista de Abreviaturas Resumo Abstract 1. CAPÍTULO 1 – APRESENTAÇÃO .................................................................................................... 1 1.1 INTRODUÇÃO .............................................................................................................. 1 1.2 OBJETIVO .................................................................................................................... 1 1.2.1 Objetivo Geral .......................................................................................................... 2 1.2.2 Objetivos Específicos ................................................................................................ 2 1.3 METODOLOGIA ............................................................................................................ 3 1.4 DELIMITAÇÃO DA PESQUISA ........................................................................................ 3 1.5 ESTRUTURA DO TRABALHO .......................................................................................... 3 2. CAPÍTULO 2 – MODELOS DE CRIPTOGRAFIA ............................................................................. 5 2.1 INTRODUÇÃO .............................................................................................................. 5 2.2 CRIPTOANÁLISE .......................................................................................................... 6 2.2.1 Sistemas de Criptoanálise ......................................................................................... 7 2.3 CRIPTOGRAFIA SIMÉTRICA ......................................................................................... .8 2.4 CRIPTOGRAFIA ASSIMÉTRICA ...................................................................................... 10 2.5 CERTIFICADO DIGITAL ............................................................................................. ...12 2.6 ASSINATURA DIGITAL..................................................................................................13 2.7 FUNÇÃO HASH ............................................................................................................14 2.8 SISTEMAS HÍBRIDOS ...................................................................................................15 3. CAPÍTULO 3 – PGP ........................................................................................................................ 17 3.1 INTRODUÇÃO ............................................................................................................. 17 3.2 O QUE É O PGP ........................................................................................................... 18 3.3 DESCRIÇÃO OPERACIONAL .......................................................................................... 19 3.3.1 Autenticação ......................................................................................................... 19 3.3.2 Confidencialidade ................................................................................................. 21 3.3.3 Compressão .......................................................................................................... 25 3.3.4 Compatibilidade de E-mail ................................................................................... 27 3.3.5 Segmentação ........................................................................................................ 27 3.4 CHAVES NO PGP ......................................................................................................... 27 v 3.4.1 Tipos de Chaves ................................................................................................... 27 3.4.2 Chaves de Sessão ................................................................................................. 28 3.4.3 Chaves Públicas e Privadas .................................................................................. 28 3.4.4 Chaves baseadas em Passphrase ........................................................................... 30 3.5 ARMAZENAMENTO DE CHAVES (KEY RINGS) ................................................................ 31 3.6 MANUTENÇÃO DE CHAVES PÚBLICAS ........................................................................... 33 3.7 REDES DE CONFIANÇA E CAMPOS DE TRUST ............................................................... 33 3.8 REVOGAÇÃO DE CHAVES ............................................................................................. 35 . CAPÍTULO 4 – IMPLEMENTAÇÃO DO PGP UTILIZANDO O GPG ............................................. 36 4.1 INTRODUÇÃO ............................................................................................................. 36 4.2 MATÉRIAIS UTILIZADOS ............................................................................................. 36 4.3 O QUE É O GPG? ......................................................................................................... 38 4.4 MÉTODO .................................................................................................................... 38 4.5 CONCLUSÃO ............................................................................................................... 45 5 CAPÍTULO 5 – COMENTÁRIOS FINAIS ........................................................................................ 46 5.1 CONCLUSÕES ............................................................................................................. 46 5.2 SUGESTÕES PARA TRABALHOS FUTUROS ..................................................................... 47 7. REFERÊNCIAS BIBLIOGRAFICAS ............................................................................................... 49 vi LISTA DE FIGURAS Figura 4.1 – Instalação do GPG............................................................................................... 38 Figura 4.2 – Instalação do Agente GPG....................................................................................39 Figura 4.3 – Criação dos Usuários............................................................................................39 Figura 4.4 – Tipos de chaves que podem ser usadas.................................................................40 Figura 4.5 – Informações do usuário.........................................................................................40Figura 4.6 – Passphrase e Criação das chaves assimétricas......................................................41 Figura 4.7 – Exportando a chave pública do destinatário.........................................................41 Figura 4.8 – Conteúdo da chave pública do destinatário..........................................................42 Figura 4.9 – Copiando a chave pública do destinatário para o diretório do remetente.............42 Figura 2.1- Criptografia Simétrica. ........................................................................................... 09 Figura 2.2- Criptografia Assimétrica. ....................................................................................... 11 Figura 2.3- Assinatura digital simples. ..................................................................................... 13 Figura 3.1– Processo de criação da assinatura digital. ............................................................. 20 Figura 3.2 – Geração da mensagem criptografada no PGP. ..................................................... 21 Figura 3.3 – Processamento para decifrar uma mensagem no PGP. ........................................ 22 Figura 3.4– Ilustração do funcionamento do PGP .................................................................... 23 Figura 3.5 – Diagrama de blocos do funcionamento da geração da mensagem no PGP. . Error! Bookmark not defined. Figura 3.6 – Diagrama de blocos do funcionamento da recuperação da mensagem original no PGP. .......................................................................................... Error! Bookmark not defined. Figura 3.7 – Estrutura de mensagem no PGP. .......................................................................... 30 Figura 3.8 – Estrutura do Private-Key Ring. ............................ Error! Bookmark not defined. Figura 3.9 – Estrutura do Public-Key Ring.. ............................................................................ 31 vii Figura 4.10 – Verificação da chave pública do destinatário no diretório do remetente............42 Figura 4.11 – Importando a chave.............................................................................................43 Figura 4.12 – Criação da mensagem.........................................................................................43 Figura 4.13 – Criptografando a mensagem com a chave pública do destinatário.....................43 Figura 4.14 – Mensagem cifrada...............................................................................................44 Figura 4.15 – Copiando a mensagem criptografada para o diretório do remetente..................44 Figura 4.16 – Verificação da presença da mensagem criptografada no diretório do destinatário ...................................................................................................................................................44 Figura 4.17 – Mensagem decriptada ........................................................................................45 Figura 4.18 – Conteúdo da mensagem......................................................................................45 viii LISTA DE TABELAS Tabela 2.5 – Protocolos com sistemas híbridos ........................................................................ 15 Tabela 2.1 – Estimativa de tempo para quebra de chaves criptográficas.7Error! Bookmark not defined. Tabela 2.2 – Principais algoritmos de criptografia simétrica ..................................................... 8 Tabela 2.3 – Principais algoritmos de criptografia assimétrica. ............................................... 10 Tabela 2.4 – Principais funções de hashing ............................................................................. 14 ix LISTA DE ABREVIATURAS PGP Pretty Good Privacy GPG GNU Privacy Guard GCHQ Government Communications Headquarters NSA National Security Agency FPGA Field-programmable gate array AES Advanced Encryption Standard DES Data Encryption Standard 3DES Triple DES NIST National Institute of Standards and Technology IDEA International Data Encryption Algorithm CAST Carlisle Adams and Stafford Tavares RSA Ron Rivest, Adi Shamir ICP Infraestrutura de Chave Pública SHA Secure Hash Algorithm MD Message-digest IPsec Internet Protocol Security SSL Security Socket Layer TLS Transport Layer Security RSADSI RSA Data Security S/MIME Secure/Multipurpose Internet Mail Extensions BBS Bulletin Board System ANSI American National Standards Institute ASCII American Standard Code For Information Interchange x DSA Digital Signature Algorithm DSS Digital Signature Standard xi RESUMO A segurança na transmissão de informações é algo essencial, pois em um ambiente de rede inseguro, certas mensagens não podem ser divulgadas para usuários não autorizados. Esta segurança é fornecida pelos diversos sistemas criptográficos existentes que buscam oferecer aos usuários autenticidade, integridade e confidencialidade. O PGP é uma aplicação de segurança que emprega métodos de criptografia simétrica, assimétrica e função de hash, sendo assim considerado um modelo híbrido que tem como objetivo a proteção das informações trocadas por correio eletrônico. Na realização do trabalho foi utilizado o GPG 1.4.11, uma versão livre para ambiente Linux. Este trabalho consiste em uma simulação onde será enviada uma mensagem de um remetente para um destinatário e esta mensagem passará pelos sistemas de criptografia empregados pelo GPG, mostrando assim ao usuário a simplicidade e eficiência na utilização da ferramenta. xii ABSTRACT The transmission of information in a secure way is something essential, because in a insecure environment messages can not be disclosed to unauthorized users. This security is provided by the various cryptographic systems that ensure authenticity, integrity and confidentiality to the users. PGP is a security application that employs methods for symmetric encryption, asymmetric and hash function, and therefore considered a hybrid model that aims to protect data exchanged by email. In this project it was used GPG 1.4.11 a free version for Linux environments. This project consists of a simulation where a message is sent from a sender to a recipient and this message will go through the encryption systems used by GPG, thus showing the user the simplicity and efficiency in the utilization of the tool. 1 1. CAPÍTULO 1 – APRESENTAÇÃO 1.1 Introdução Nós estamos nos dirigindo a um futuro no qual as nações serão todas entrecortadas por redes de dados de fibra óptica de alta capacidade, tornando a questão da segurança da informação como algo de extrema importância para as comunicações, segurança esta que diz respeito à proteção de determinados dados, com a intenção de preservar seus respectivos valores para uma organização ou um indivíduo. Podemos entender como informação todo o conteúdo ou dado valioso para um indivíduo, que consiste em qualquer conteúdo com capacidade de armazenamento ou transferência, que serve a um determinado propósito e que é de utilidade do ser humano. O crescimento explosivo em sistemas de computadores e suas interconexões através de redes têm aumentado a dependência das organizações e indivíduos sobre as informações armazenadas e comunicadas, levando a uma maior consciência da necessidade de proteger dados e recursos. O termo computação segura refere-se à proteção conferida a um sistema de informação automatizado, a fim de atingir os objetivos aplicáveis de preservaçãoda integridade, disponibilidade, confidencialidade dos recursos do sistema de informação, incluindo hardware, software, firmware e dados. O objetivo da maioria dos hackers, independente de seus negócios, é roubar informações do usuário. Seja através de ataques discretos e individuais ou em grande escala por meio de sites populares e bancos de informação financeira. [Assunção, 2011] 2 A criptografia que consiste em mascarar uma informação com o objetivo de esconder o seu real conteúdo vem amadurecendo ao longo dos anos, levando ao desenvolvimento de práticas e aplicações prontamente disponíveis para reforçar a segurança da rede contra ataques de segurança. A segurança nas redes consiste em medidas para deter, prevenir e corrigir vulnerabilidades presentes em sistemas para que a troca de informação possa ocorrer de forma segura. O PGP é um programa de criptografia altamente seguro, originalmente escrito por Philip Zimmermann. Nos últimos anos o PGP conquistou milhares de entusiastas em todo o mundo e tornou-se de fato um padrão para a criptografia de correio eletrônico (e-mail), sendo uma das primeiras tecnologias de segurança amplamente utilizada na Internet. O site do PGP é acessado por mais de um milhão de vezes por mês por usuários de mais de 166 países [PGPI, 2007]. Versões do PGP estão disponíveis em domínio público, sendo possível encontrar o software PGP para diferentes sistemas operacionais, bem como uma grande quantidade de materiais de leitura interessante. A idéia principal é oferecer confidencialidade e integridade, caso o usuário não queira que seu correio eletrônico particular (e-mail) ou documentos confidenciais sejam lidos ou modificados por mais ninguém. Não há nada errado em assegurar sua privacidade. Privacidade é algo tão natural e respeitável quanto a Constituição. O PGP dá o poder às pessoas para tomar sua privacidade em suas próprias mãos. 1.2 Objetivo 1.2.1 Objetivo Geral Mostrar o funcionamento e as etapas para a configuração do programa PGP utilizando o GPG, versão open source para sistemas Linux, mostrando assim eficiência em assegurar a transmissão de informações entre usuários em uma rede. 1.2.2 Objetivos Específicos • Estudar o conceito e a importância da criptografia. • Abordar as características e o funcionamento dos diversos tipos de sistemas criptográficos, mostrando vulnerabilidades que podem ser corrigidas com o uso desse mecanismo de segurança. • Abordar a importância da presença de segurança em um correio eletrônico particular. 3 • Estudar as características e importância do PGP. • Mostrar como utilizar e configurar o PGP em ambiente Linux através de comandos no terminal de controle, fornecendo ao usuário um modelo de solução para o mantimento da integridade, confidencialidade e autenticidade no correio eletrônico. 1.3 Metodologia Primeiro foi realizado um estudo geral sobre os diferentes tipos de criptografia e algoritmos que são utilizados, ressaltando o funcionamento, as características e as debilidades de cada um. Posteriormente foi ressaltada a importância da segurança das informações presentes em e-mails e como o PGP com sua eficiência veio tornar possível uma comunicação segura entre duas ou mais partes. Por fim foi realizada uma simulação do funcionamento e configuração do PGP, utilizando o GPG que é uma versão open source do PGP para sistemas Linux. Tutorias, artigos e livros foram usados para fornecer um maior embasamento teórico e uma melhor solução para o funcionamento da simulação, mostrando assim a eficiência e a simplicidade de se utilizar um programa que fornece ao usuário o que de melhor tem nos sistemas de criptografias abordados nos capítulos posteriores. 1.4 Delimitação da Pesquisa Esta monografia baseia-se em estudos realizados na cadeira de Computer Security na Jackson State University e pesquisas laboratoriais com foco em segurança de rede. Visando mostrar a importância da utilização do PGP em e-mails para preservar os princípios básicos de segurança, oferecendo aos usuários garantia de que a informação não será comprometida. 1.5 Estrutura do Trabalho No capítulo 1, é realizado uma breve introdução sobre a importância das informações comunicadas e a necessidade da utilização de um correio eletrônico que ofereça segurança aos usuários para transmissão destas informações, assim como foi realizada a identificação do problema a ser abordado no trabalho que consiste na quebra da integridade e confidencialidade na comunicação por fontes más intencionadas, levando aos usuários e 4 organizações a tentarem incorporar mecanismos de segurança para proteger a informação a ser transmitida, sendo assim a utilização do PGP uma das soluções viáveis. No capítulo 2 foram abordados os sistemas de criptografia de chave pública e de chave privada que oferecem base para o funcionamento do PGP, foram mostradas as melhores qualidades de cada um, assim como debilidades e o funcionamento para que o entendimento do PGP que utiliza as melhores características de cada um possa ser compreendido no capítulo 3, onde os componentes do PGP foram estudados, mostrando assim sua eficiência e o seu funcionamento. No capítulo 4 foi realizada a simulação do programa PGP, com a utilização do GPG, versão open source para ambiente Linux, como sendo uma alternativa para que usuários possam utilizar este modelo de simulação com o objetivo principal de terem suas mensagens trocadas com segurança e privacidade, evitando o roubo de informações que podem ser essenciais para certos usuários ou empresas. A conclusão do trabalho é realizada no capítulo 5, onde é ratificada a questão da importância da utilização do PGP nos sistemas, assim como perspectivas de estudos para melhorar a segurança das informações. 5 2. CAPÍTULO 2 – MODELOS CRIPTOGRAFIA 2.1 Introdução A criptografia é uma arte ou ciência de escrever ocultamente talvez tão antiga quanto à própria escrita, hoje em dia é um dos métodos mais eficientes de se transferir informação, sem que haja a possibilidade de interferência por parte de terceiros. O objetivo da criptografia é transformar um conjunto de informação legível, como um e-mail, por exemplo, em um emaranhado de caracteres impossível de ser compreendido. Baseia-se no conceito de chaves, apenas quem tem a chave de decriptação é capaz de recuperar o e-mail em formato legível. [Kurose, 2010] Ao longo da história surgiram alguns modelos criptográficos elaborados por usuários com o objetivo de protegerem suas informações para que as mesmas não fossem interceptadas por fontes mal intencionadas. O Código de César é um dos métodos de criptografia mais antigos que se tem notícia, seu funcionamento era básico, deslocando as letras do alfabeto de acordo com a chave. Assim, se a chave era 3, transformava-se a letra B em E, a letra A virava D e assim sucessivamente. [Silva, 2006] O mais interessante é que a tecnologia da criptografia não mudou muito até meados do século XX. Depois da Segunda Guerra Mundial, com o aparecimento do computador, a área realmente floresceu incorporando complexos algoritmos matemáticos. Durante a guerra, os ingleses ficaram conhecidos pelos seus esforços para decodificação de códigos, já os alemães desenvolveram uma máquina eletromecânica para criptografar e decriptografar, denominada de Enigma. Na verdade, esses trabalhos formaram a base para a ciência da computação moderna. [Souza, 2011] 6 Durante a chamada "Guerra Fria", entre Estados Unidos e União Soviética, foram criados e utilizados diversos métodos para esconder mensagens e estratégias. Desses esforços, surgiram outros tipos decriptografia, tais como: por chave simétrica, onde existe uma chave secreta que deve ser compartilhada pelos usuários; por chave assimétrica, onde existem duas chaves uma pública e uma privada, por hash e até a chamada criptografia quântica, que se encontra, hoje, em desenvolvimento. Neste capítulo será desenvolvido um estudo ao longo dos modelos criptográficos existentes e que são utilizados pelo PGP. Serão abordados os modelos de criptografia simétrico, assimétrico e função hash, entre outros mecanismos que foram implantados para fornecer aos usuários uma melhor segurança. 2.2 Criptoanálise Criptoanálise é a ciência que analisa e quebra informações seguras. Envolve uma série de combinações de raciocínio analítico, aplicação de ferramentas matemáticas, procura de padrões, paciência, determinação e muitas vezes sorte. As pessoas que participam desse esforço são denominadas criptoanalistas. Da fusão da criptografia com a criptoanálise, forma- se a criptologia. A criptoanálise tem se desenvolvido junto com a criptografia, cifras novas que estão sendo projetadas para substituir projetos velhos, e as novas técnicas de criptoanálise inventadas para quebrar os esquemas melhorados. Na prática, são vistos como os dois lados da mesma moeda, a fim de criar uma criptografia segura. A criptoanálise representa o esforço de decifrar mensagens sem que se tenha o conhecimento prévio da chave secreta que as gerou. [Moreno et al., 2005] Uma criptoanálise bem sucedida influenciou sem dúvida a história; a habilidade de ler os segredos presumidos e as plantas de outros pode ser uma vantagem decisiva na tomada de decisões. Por exemplo, na 1º Guerra Mundial, quebrar o telegrama de Zimmermann, um telegrama codificado despachado pelo ministro do exterior do Império Alemão, Arthur Zimmermann, em 16 de janeiro de 1917, para o embaixador alemão no México no auge da Primeira Guerra Mundial, era fundamental para trazer os Estados Unidos para guerra. Os governos reconheceram por muito tempo os benefícios potenciais da criptoanálise para a inteligência militar e diplomática, e têm estabelecido as organizações dedicadas a quebrar os 7 códigos e as cifras de outras nações, por exemplo, GCHQ e o NSA, as organizações que são ainda muito ativas hoje. 2.2.1 Sistemas de Criptoanálise Muitos ataques de criptografia não são puramente matemáticos. Em ambientes nos quais a segurança das informações é vital, como em ambientes de desenvolvimento de alta tecnologia, deve-se tomar muito cuidado com o lixo, pois o usuário pode ter anotado uma chave em um papel que foi para o cesto de lixo. Além disso, as pessoas são vulneráveis à corrupção e outras formas de espionagem industrial, portanto ideal é que um grupo muito pequeno de pessoas conheça a chave criptográfica e, se possível, que ela seja repartida entre mais de uma pessoa, para que só com as duas ou mais partes se possa formar a chave original. Em geral, os ataques para quebrar a criptografia baseiam-se em buscas exaustivas da chave criptográfica. Os ataques de força bruta consistem na verificação sistemática de todas as possíveis chaves e senhas até que as corretas sejam encontradas, no pior dos casos, isto envolveria percorrer todo o espaço de busca para encontrar a chave. [Moreno et al., 2005] A Tabela 2.1 mostra uma estimativa de tempo para quebra de chaves criptográficas por ataques de força bruta. As colunas indicam a capacidade computacional de quebrar a criptografia por cada grupo. Tamanho da chave Hacker individual Grupo Rede acadêmica Grande empresa Inteligência Militar 40 bits Algumas semanas Alguns dias Algumas horas Alguns milissegundos Alguns milissegundos 56 bits Alguns séculos Algumas décadas Alguns anos Algumas horas Alguns segundos 64 bits Alguns milênios Alguns séculos Algumas décadas Alguns dias Alguns minutos 112 bits Infinito Infinito Infinito Alguns séculos Alguns séculos 128 bits Infinito Infinito Infinito Infinito Alguns milênios Tabela 2.1 – Estimativa de tempo para quebra de chaves criptográficas. Fonte: (Moreno et al., 2005) Só para se ter uma idéia, um chip FPGA que custa US$ 100,00 quebra chaves de 40 bits em uma hora e demora alguns meses pra quebrar uma chave de 56 bits. Com 25 chips 8 ORCA ao custo de US$ 1.000,00 podemos quebrar uma chave de 40 bits em quatro minutos e de 56 bits em 100 dias. Com um hardware de US$ 100.000,00 as chaves de 40 bits podem ser quebradas em 24 segundos e de 56 bits em dez dias. As agências de inteligência possuem sistemas que permitem quebrar chaves de 40 bits apenas sete segundos e 56 bits em 13 horas. 2.3 Criptografia Simétrica O modelo mais antigo de criptografia, em que a chave, isto é, o elemento que dá acesso à mensagem oculta trocada entre duas partes, é igual para ambas as partes e deve permanecer em segredo (privada). A principal vantagem é a simplicidade, esta técnica apresenta facilidade de uso e rapidez para executar os processos criptográficos. Entenda que se as chaves utilizadas forem complexas a elaboração de um algoritmo de chave privada se torna bastante fácil, porém as possibilidades de interceptação são correlatas aos recursos empregados, entretanto sua utilização é considerável no processo de proteção da informação, pois quanto mais simples o algoritmo, melhor é a velocidade de processamento e facilidade de implementação. O principal problema residente na utilização deste sistema de criptografia é que quando a chave de ciframento é a mesma utilizada para deciframento, ou esta última pode facilmente ser obtida a partir do conhecimento da primeira, ambas precisam ser compartilhadas previamente entre origem e destino, antes de se estabelecer o canal criptográfico desejado, e durante o processo de compartilhamento a senha pode ser interceptada, por isso é fundamental utilizar um canal seguro durante o compartilhamento, uma vez que qualquer um que tenha acesso à senha poderá descobrir o conteúdo secreto da mensagem. [Stallings, 2011] Algoritmo Bits Descrição AES 128 O Advanced Encryption Standard (AES) é uma cifra de bloco, anunciado pelo National Institute of Standards and Technology (NIST) em 2003, fruto de concurso para escolha de um novo algoritmo de chave simétrica para proteger informações do governo federal, sendo adotado como padrão pelo governo dos Estados Unidos, é um dos algoritmos mais populares, desde 2006, usado para criptografia de chave simétrica, sendo considerado como o padrão substituto do DES. O AES tem um tamanho de bloco fixo em 128 bits e uma chave com tamanho de 128, 192 ou 256 bits, ele é rápido tanto em software quanto em hardware, é relativamente fácil de executar e requer pouca memória. O Data Encryption Standard (DES) foi o algoritmo simétrico mais disseminado no mundo, até a padronização do AES. Foi criado pela IBM em 9 DES 56 1977 e, apesar de permitir cerca de 72 quadrilhões de combinações, seu tamanho de chave (56 bits) é considerado pequeno, tendo sido quebrado por "força bruta" em 1997 em um desafio lançado na internet. O NIST que lançou o desafio mencionado, recertificou o DES pela última vez em 1993, passando então a recomendar o 3DES. 3DES 112 ou 168 O 3DES é uma simples variação do DES, utilizando o em três ciframentos sucessivos, podendo empregar uma versão com duas ou com três chaves diferentes. É seguro, porém muito lento para ser um algoritmo padrão. IDEA 128 O International Data Encryption Algorithm (IDEA) foi criado em 1991 por James Massey e Xuejia Lai e possui patente da suíça ASCOM Systec. O algoritmo é estruturado seguindo as mesmas linhas gerais do DES. Masna maioria dos microprocessadores, uma implementação por software do IDEA é mais rápida do que uma implementação por software do DES. O IDEA é utilizado principalmente no mercado financeiro e no PGP, o programa para criptografia de e-mail pessoal mais disseminado no mundo. Blowfish 32 a 448 Algoritmo desenvolvido por Bruce Schneier, que oferece a escolha, entre maior segurança ou desempenho através de chaves de tamanho variável. O autor aperfeiçoou o no Twofish. Twofish 128 É uma das poucas cifras incluídas no OpenPGP. O Twofish é uma chave simétrica que emprega a cifra de bloco de 128 bits, utilizando chaves de tamanhos variáveis, podendo ser de 128, 192 ou 256 bits. Ele realiza 16 interações durante a criptografia, sendo um algoritmo bastante veloz. A cifra Twofish não foi patenteada estando acessível no domínio público, como resultado, o algoritmo Twofish é de uso livre para qualquer um utilizar sem restrição. CAST 128 É um algoritmo de cifra de bloco, sendo criado em 1996 por Carlisle Adams e Stafford Tavares. O CAST-128 é um algoritmo de Feistel, com 12 a 16 iterações da etapa principal, tamanho de bloco de 64 bits e chave de tamanho variável (40 a 128 bits, com acréscimos de 8 bits). Os 16 rounds de iteração são usados quando a chave tem comprimento maior que 80 bits. Tabela 2.2 – Principais algoritmos de criptografia simétrica. Fonte: (Oliveira, 2007) Figura 2.1 – Criptografia Simétrica. Fonte: (Oliveira, 2007) 10 2.4 Criptografia Assimétrica Modelo de criptografia criado na década de 1970, pelo matemático Clifford Cocks que trabalhava no serviço secreto inglês, o GCHQ, na qual cada parte envolvida na comunicação usa duas chaves diferentes (assimétricas) e complementares, uma privada e outra pública. Neste caso, as chaves não são apenas senhas, mas arquivos digitais mais complexos (que eventualmente até estão associados a uma senha). A chave pública pode ficar disponível para qualquer pessoa que queira se comunicar com outra de modo seguro, mas a chave privada deverá ficar em poder apenas de cada titular. É com a chave privada que o destinatário poderá decodificar uma mensagem que foi criptografada para ele com sua respectiva chave pública. Para entender o conceito, basta pensar num cadeado comum protegendo um determinado bem. A mensagem é este bem, e o cadeado, que pode ficar exposto, é a chave pública. Apenas quem tiver uma chave particular (privada) que consiga abrir o cadeado poderá acessar a mensagem. A principal vantagem deste método é a sua segurança, pois não é preciso (nem se deve) compartilhar a chave privada. Por outro lado, o tempo de processamento de mensagens com criptografia assimétrica é muitas vezes maior do que com criptografia simétrica, o que pode limitar seu uso em determinadas situações. A grande vantagem deste sistema é permitir a qualquer um enviar uma mensagem secreta, apenas utilizando a chave pública de quem irá recebê-la. Como a chave pública está amplamente disponível, não há necessidade do envio de chaves como feito no modelo simétrico. A confidencialidade da mensagem é garantida, enquanto a chave privada estiver segura. Caso contrário, quem possuir acesso à chave privada terá acesso às mensagens. [Stallings, 2011] O ápice deste sistema é a complexidade empregada no desenvolvimento dos algoritmos que devem ser capazes de reconhecer a dupla de chaves existentes e poder relacionar as mesmas no momento oportuno, o que acarreta num grande poder de processamento computacional. Algoritmo Descrição RSA O RSA é um algoritmo assimétrico que possui este nome devido a seus inventores: Ron Rivest, Adi Shamir e Len Adleman, que o criaram em 1977 no MIT. Atualmente, é o algoritmo de chave pública mais amplamente utilizado, além de ser uma das mais poderosas formas de criptografia de chave pública conhecidas até o momento. O RSA utiliza números primos. A premissa por trás do RSA consiste na facilidade de multiplicar dois números primos para obter um terceiro número, mas muito difícil de recuperar os dois primos a partir daquele terceiro número. Isto é conhecido como fatoração. Por exemplo, os fatores primos de 3.337 são 47 e 71. Gerar a chave pública envolve multiplicar dois primos grandes; qualquer um pode fazer isto. Derivar a chave privada a partir da chave pública envolve fatorar um grande número. Se o número for grande o suficiente e bem escolhido, então ninguém pode fazer isto em uma quantidade de tempo razoável. Assim, a segurança 11 do RSA baseia se na dificuldade de fatoração de números grandes. ElGamal O ElGamal é outro algoritmo de chave pública utilizado para gerenciamento de chaves. Sua matemática difere da utilizada no RSA, mas também é um sistema comutativo. O algoritmo envolve a manipulação matemática de grandes quantidades numéricas. Sua segurança advém de algo denominado problema do logaritmo discreto. Assim, o ElGamal obtém sua segurança da dificuldade de calcular logaritmos discretos em um corpo finito, o que lembra bastante o problema da fatoração. Diffie-Hellman Também baseado no problema do logaritmo discreto, e o criptosistema de chave pública mais antigo ainda em uso. O conceito de chave pública, aliás foi introduzido pelos autores deste criptosistema em 1976. Contudo, ele não permite nem ciframento nem assinatura digital. O sistema foi projetado para permitir a dois indivíduos entrarem em um acordo ao compartilharem um segredo tal como uma chave, muito embora eles somente troquem mensagens em público. Curvas Elípticas Em 1985, Neal Koblitz e V. S. Miller propuseram de forma independente a utilização de curvas elípticas para sistemas criptográficos de chave pública. Eles não chegaram a inventar um novo algoritmo criptográfico com curvas elípticas sobre corpos finitos, mas implementaram algoritmos de chave pública já existentes, como o algoritmo de Diffie-Hellman, usando curvas elípticas. Assim, os sistemas criptográficos de curvas elípticas consistem em modificações de outros sistemas (o ElGamal, por exemplo), que passam a trabalhar no domínio das curvas elípticas, em vez de trabalharem no domínio dos corpos finitos. Tabela 2.3 – Principais algoritmos de chave pública ou criptografia assimétrica. Fonte: (Oliveira, 2007) Figura 2.2 – Criptografia Assimétrica. Fonte: (Moreira, 2006) 12 2.5 Certificado Digital Com um sistema de chave pública, o gerenciamento de chaves passa a ter dois novos aspectos: primeiro, deve-se previamente localizar a chave pública de qualquer pessoa com quem se deseja comunicar e, segundo, deve-se obter uma garantia de que a chave pública encontrada seja proveniente daquela pessoa. Sem esta garantia, um intruso pode convencer os interlocutores de que chaves públicas falsas pertencem a eles. Estabelecendo um processo de confiança entre os interlocutores, o intruso pode fazer-se passar por ambos. Deste modo, quando um emissor enviar uma mensagem ao receptor solicitando sua chave pública, o intruso poderá interceptá-la e devolver-lhe uma chave pública forjada por ele. Ele também pode fazer o mesmo com o receptor, fazendo com que cada lado pense que está se comunicando com o outro, quando na verdade estão sendo interceptados pelo intruso, então este pode decifrar todas as mensagens, cifrá-las novamente ou, se preferir, até substituí-las por outras mensagens. Através deste ataque, um intruso pode causar tantos danos ou até mais do que causaria se conseguisse quebrar o algoritmo de criptografia empregado pelos interlocutores. A garantia para evitar este tipo de ataque é representada pelos certificados de chave pública, comumente chamados de certificado digital, tais certificadosconsistem em chaves públicas assinadas por uma pessoa de confiança. Servem para evitar tentativas de substituição de uma chave pública por outra. O certificado contém algo mais do que sua chave pública, ele apresenta informações sobre o nome, endereço e outros dados pessoais, e é assinado por alguém em quem o proprietário deposita sua confiança, uma autoridade de certificação (certification authority - CA). Assim, um certificado digital pode ser definido como um documento eletrônico, assinado digitalmente por uma terceira parte confiável. [Stallings, 2011] No Brasil, o órgão da autoridade certificadora raiz é o ICP-Brasil (AC-Raiz), ele é o executor das políticas de certificados e normas técnicas e operacionais aprovadas pelo Comitê Gestor da ICP-Brasil. São autoridades certificadoras no país: Serpro (AC-SERPRO), Caixa Econômica Federal (AC-CAIXA), Serasa Experian (AC-SERASA), Receita Federal do Brasil (AC-RFB), Certsing (AC-Certisign), Imprensa Oficial do Estado de São Paulo (AC-IOSP), Autoridade Certificadora da Justiça (AC-JUS), Autoridade Certificadora da Presidência da República (AC-PR) e Casa da Moeda do Brasil (AC-CMB). [Oliveira, 2007] 13 Assim, a AC-Raiz tem autoridade de emitir, expedir, distribuir, revogar e gerenciar os certificados das autoridades certificadoras de nível imediatamente subsequente ao seu, sendo também encarregada de emitir a lista de certificados revogados e de fiscalizar e auditar as autoridades certificadoras, autoridades de registro e demais prestadores de serviço habilitados na ICP-Brasil. Além disso, verifica se as autoridades certificadoras (ACs) estão atuando em conformidade com as diretrizes e normas técnicas estabelecidas pelo Comitê Gestor. 2.6 Assinatura Digital Outro benefício de criptografia com chave pública é que provê um método para empregar assinaturas digitais. Assinaturas digitais habilitam o receptor da informação verificar a autenticidade da origem da informação, e também verifica se a informação está intacta. Assim, assinaturas digitais com chave pública proporcionam autenticação e integridade de dados. Uma assinatura digital também provê não repúdio, o que significa que previne o emissor de reivindicar que ele ou ela não enviaram de fato a informação. Estas características são tão fundamentais para criptografia como privacidade, se não mais. Uma assinatura digital serve para o mesmo propósito que uma assinatura manuscrita. Porém, uma assinatura manuscrita é fácil falsificar. Uma assinatura digital é superior a uma assinatura manuscrita no sentido que é quase impossível falsificar, prestando atenção aos conteúdos da informação como também para a identidade do signatário. A maneira básica na qual são criadas assinaturas digitais é ilustrada na Figura 2.1. O processo se baseia em uma inversão do sistema, onde o funcionamento da assinatura digital pode ser descrito como: o emissor cifra (ou seja, atesta autenticidade) a mensagem com sua chave privada e a envia, em um processo denominado de assinatura digital. Cada um que receber a mensagem deverá verificar a validade da assinatura digital, utilizando para isso a chave pública do emissor, reconhecendo de fato, que a mensagem não foi adulterada. Figura 2.3 – Assinatura digital simples. Fonte: (Moreira, 2006) 14 Como a chave pública do emissor apenas decifra (ou seja, verifica a validade) mensagens cifradas com sua chave privada, obtém-se a garantia de autenticidade, integridade e não-repudiação da mensagem, o que é apoiado pela função hash, pois se alguém modificar um bit do conteúdo da mensagem ou se outra pessoa assiná-la ao invés do próprio emissor, o sistema de verificação não irá reconhecer a assinatura digital dele como sendo válida. É importante perceber que a assinatura digital, como descrita, não garante a confidencialidade da mensagem. Qualquer um poderá acessá-la e verificá-la, mesmo um intruso, apenas utilizando a chave pública do emissor, assim, ao empregar o uso da técnica de assinatura digital o que se busca é a garantia de autenticidade, integridade e não-repudiação da mensagem. 2.7 Função Hash A assinatura digital obtida através do uso da criptografia assimétrica ou de chave pública infelizmente não pode ser empregada, na prática, de forma isolada, é necessário o emprego de um mecanismo fundamental para o adequado emprego da assinatura digital. Este mecanismo é a função hash. Assim, na prática é inviável utilizar puramente algoritmos de chave pública para assinaturas digitais, principalmente quando se deseja assinar grandes mensagens, que podem levar preciosos minutos ou mesmo horas para serem integralmente cifradas com a chave privada de alguém, ao invés disso, é empregada uma função hash, que gera um valor pequeno, de tamanho fixo, derivado da mensagem que se pretende assinar, de qualquer tamanho, para oferecer agilidade nas assinaturas digitais, além de integridade confiável. [Stallings, 2011] Serve, portanto, para garantir a integridade do conteúdo da mensagem que representa, por isto, após o valor hash de uma mensagem ter sido calculado através do emprego de uma função hash, qualquer modificação em seu conteúdo, mesmo em apenas um bit da mensagem, será detectado, pois um novo cálculo do valor hash sobre o conteúdo modificado resultará em um valor hash bastante distinto. Funções Descrição SHA-2 O Secure Hash Algorithm (SHA-2) por outro lado significativamente difere da função hash SHA- 1, desenhado pelo NSA é uma família de duas funções hash similares, com diferentes tamanhos de bloco, conhecido como SHA-256 e SHA-512. Eles diferem no tamanho, o SHA- 256 utiliza 256 bits e o SHA-512 utiliza 512 bits. Há também versões truncadas de cada padrão, conhecidos como SHA-224 e SHA-384. O ICP-Brasil em suas mudanças anunciadas adotadas para o novo padrão criptográfico do sistema de certificação digital, esta implantando em 2012, o uso do SHA-512 em substituição ao seu antecessor, o SHA-1. Um novo padrão proposto de função de hash ainda está em desenvolvimento, pela programação do NIST a 15 competição que apresentará esta nova função hash tem previsão de termino, com a seleção de uma função vencedora, que será dado o nome de SHA-3, ainda em 2012. SHA-1 O Secure Hash Algorithm (SHA-1), uma função de espalhamento unidirecional inventada pela NSA, gera um valor hash de 160 bits, a partir de um tamanho arbitrário de mensagem. O funcionamento interno do SHA-1 é muito parecido com o observado no MD4, indicando que os estudiosos da NSA basearam-se no MD4 e fizeram melhorias em sua segurança. De fato, a fraqueza existente em parte do MD5, descoberta após o SHA-1 ter sido proposto, não ocorre no SHA-1. MD5 É uma função de espalhamento unidirecional inventada por Ron Rivest, do MIT, que também trabalha para a RSA Data Security. A sigla MD significa message digest. Este algoritmo produz um valor hash de 128 bits, para uma mensagem de entrada de tamanho arbitrário. Foi inicialmente proposto em 1991, após alguns ataques de criptoanálise terem sidos descobertos contra a função hashing prévia de Rivest: a MD4. O algoritmo foi projetado para ser rápido, simples e seguro. Seus detalhes são públicos, e têm sido analisados pela comunidade de criptografia. MD2 e MD4 O MD4 é o precursor do MD5, tendo sido inventado por Ron Rivest. Após terem sido descobertas algumas fraquezas no MD4, Rivest escreveu o MD5. O MD4 não é mais utilizado. O MD2 é uma função de espalhamento unidirecional simplificada, e produz um hash de 128 bits. A segurança do MD2 é dependente de uma permutação aleatória de bytes. Não é recomendável sua utilização, pois, em geral, é mais lento do que as outras funções hashcitadas e acredita-se que seja menos seguro. Tabela 2.4 – Principais funções hashing. Fonte: (Oliveira, 2007) 2.8 Sistemas Híbridos Em resumo, os algoritmos criptográficos podem ser combinados para a implementação dos três mecanismos criptográficos básicos: o ciframento, a assinatura e o hashing. Estes mecanismos são componentes dos protocolos criptográficos, embutidos na arquitetura de segurança dos produtos destinados ao comércio eletrônico. Estes protocolos criptográficos, portanto, provêm os serviços associados à criptografia que viabilizam o comércio eletrônico: disponibilidade, sigilo, controle de acesso, autenticidade, integridade e não-repúdio, usualmente apoiado por sistemas híbridos. Protocolo Descrição IPSEC Padrão de protocolos criptográficos desenvolvidos para o IPv6. Realiza também o tunelamento de IP sobre IP. É composto de três mecanismos criptográficos: Authentication Header (define a função hashing para assinatura digital), Encapsulation Security Payload (define o algoritmo simétrico para ciframento) e ISAKMP (define o algoritmo assimétrico para gerência e troca de chaves de criptografia). Criptografia e tunelamento são independentes, e permite Virtual Private Network (VPN) fim-a-fim. SSL e TLS Oferecem suporte de segurança criptográfica para os protocolos NTTP, HTTP, SMTP e Telnet. Permitem utilizar diferentes algoritmos simétricos, message-digest (hashing) e métodos de autenticação e gerência de chaves (assimétricos). PGP O Pretty Good Privacy (PGP), foi inventado por Phil Zimmermman em 1991, é um programa criptográfico famoso e bastante difundido na internet, destinado à criptografia de e-mail pessoal. Algoritmos suportados: hashing: MD5, SHA-1 - simétricos: CAST-128, IDEA e 3DES - assimétricos: RSA, Diffie-Hellman e DSS. O Secure Multipurpose Internet Mail Extensions (S/MIME) consiste em um esforço de consórcio de empresas, liderado pela RSADSI e Microsoft, para adicionar segurança a mensagens 16 S/MIME eletrônicas no formato MIME. Apesar do S/MIME e PGP serem ambos padrões para a internet, o S/MIME tem sua maior utilização no mercado corporativo, enquanto o PGP é utilizado em e-mail pessoal. SET O SET é um conjunto de padrões e protocolos, para realizar transações financeiras seguras, como as realizadas com cartão de crédito na internet. Oferece um canal de comunicação seguro entre todos os envolvidos na transação. Garante autenticidade X.509v3 e privacidade entre as partes. X.509 Recomendação ITU-T, a especificação X.509 define o relacionamento entre as autoridades de certificação. Faz parte das séries X.500 de recomendações para uma estrutura de diretório global, baseada em nomes distintos para localização. Utilizado pelo S/MIME, IPSec, SSL/TLS e SET. Baseado em criptografia com chave pública (RSA) e assinatura digital (com hashing). Tabela 2.5 - Protocolos com Sistemas Híbridos. Fonte: (Oliveira, 2007) 17 3. CAPÍTULO 3 – PGP 3.1 Introdução Com o advento da era da informação, está cada vez mais fácil “observar” a conversa alheia sem que as pessoas tomem conhecimento. Em todos os meios eletrônicos estão presentes formas de espionagem. Vemos a correspondência convencional ser substituída com uma velocidade surpreendente pelos correios eletrônicos, os e-mails. Entretanto, ao fazer esta opção, raramente as pessoas têm consciência do que isso representa. Podemos comparar os e- mails que não são criptografados, aos telefonemas, as cartas sem envelope, com seu conteúdo aberto para quem quiser observar. A comunicação eletrônica também torna a comunicação impessoal. O único contato que temos com a pessoa com quem estamos nos comunicando é um texto em uma tela de computador ou uma voz que sai de um aparelho de telefone. O que ou quem nos garante que estamos realmente nos comunicando com quem pensamos? Talvez para a comunicação corriqueira, cotidiana, essa característica não seja tão imprescindível, mas quando tratamos de assuntos confidenciais, de transações financeiras, de comércio eletrônico, enfim, tudo em que uma das partes sairá lesada se a comunicação não estiver sendo feita com quem se espera estar do outro lado da comunicação, este fator é crítico. Neste trabalho será abordada uma forma de contornar os problemas acima descritos usando o PGP. Nos capítulos anteriores foram abordados a importância da segurança nas redes para o correto compartilhamento de informações e como funcionam alguns dos sistemas de criptografia existentes. Neste capítulo serão mostrados o que é o PGP, o funcionamento, a importância e como o mesmo utiliza das ferramentas e tecnologias mostradas anteriormente. É possível oferecer serviços de segurança em cada uma das quatro principais camadas da pilha de protocolos da Internet. Quando a segurança é oferecida para um protocolo específico da camada de aplicação, a aplicação que usa o protocolo utilizará um ou mais 18 serviços de segurança, como sigilo, autenticação ou integridade. Quando a segurança é oferecida para um protocolo da camada de transporte, por exemplo, todas as aplicações que usam esse protocolo aproveitam os serviços de segurança do protocolo de transporte, o mesmo acontece quando a segurança é oferecida na camada de rede ou mesmo em um enlace, todos os dados que fazem uso desses protocolos recebem estes serviços de segurança. [Kurose, 2010] Mas por que a funcionalidade da segurança deve ser fornecida em mais de uma camada na Internet. Não bastaria prover essa funcionalidade na camada de Rede? Existem duas repostas pra essa pergunta. Primeiro, embora a segurança na camada de rede possa oferecer “cobertura total” cifrando todos os dados nos datagramas e autenticando todos os endereços IP destinatários, ela não pode prover proteção no nível do usuário. Segundo, geralmente é mais fácil implementar serviços da Internet, incluindo serviços de segurança nas camadas superiores da pilha de protocolo. O PGP é uma aplicação que fornece proteção ao usuário, oferecendo um e-mail seguro, necessitando apenas de um código de aplicação do cliente e do servidor. O e-mail é enviado em forma de código aleatório (cifrado) e só quem pode ler é o receptor a quem foi dado permissão. Os servidores vão verificar as chaves públicas e privadas dos dois para poder desembaralhar o conteúdo. [Kurose, 2010] Uma pessoa pensaria, então, que a criptografia forte seria quase 100% segura contra até mesmo um criptoanalista extremamente determinado. Ninguém provou que a encriptação mais forte alcançável hoje será segura o suficiente amanhã por causa do aumento constante do poder de computação. Porém, a criptografia forte empregada por PGP é uma das melhores disponíveis, sendo projetado para ser compatível com todos os sistemas de e-mail. 3.2 O que é o PGP? Pretty Good Privacy, ou PGP como é conhecido, é um programa híbrido, se utilizando da criptografia de chave pública e da criptografia de chave simétrica. Ele serve para proteger criptograficamente e-mails e arquivos, podendo ser utilizado para prover confidencialidade, autenticação, integridade e não-repudiação. Foi escrito por Phill Zimmermann e sua primeira aparição na internet foi em junho de 1991. Nas palavras do próprio Phill Zimmermann: 19 “O PGP usa a criptografia de chave pública para proteger e-mails e arquivos de dados. Comunicar seguramente com pessoas que você nunca viu, sem a necessidade de canais seguros para troca prévia de chaves. O PGP é bem elaborado e rápido, com sofisticado gerenciamento de chaves, assinaturas digitais, compressão de dados, e um projeto ergonômico bom.” A idéia de seu criador foi juntar os melhores algoritmos decriptografia conhecidos e integrá-los em uma aplicação de propósito geral independente de plataforma e fácil de ser utilizado. O resultado obtido foi disponibilizado gratuitamente na internet junto com seu código fonte e documentação. E, finalmente, o próprio Phill entrou em acordo com a Network Associates para criar uma versão comercial do PGP totalmente compatível e de baixo custo. [Atvars et al., 2008] Os softwares de PGP de hoje são tão avançados que foram além do e-mail. Eles protegem e criptografam computadores inteiros, discos rígidos e qualquer tipo de arquivo: fotos, músicas etc. Não é uma mágica de conveniência, mas é o preço a se pagar pela privacidade segura. Com as duas pessoas usando PGP, elas podem trocar e-mails criptografados com algoritmos seguros utilizados internacionalmente. Nem mesmo a polícia tem acesso. Um dos modos mais convenientes de usar PGP é através de um dos aplicativos populares de email suportados pelos plug-ins de PGP. Com estes plug-ins, você pode codificar e assinar e também decifrar e verificar suas mensagens, enquanto você está escrevendo e lendo seu email, com o simples apertar de um botão. 3.3 Descrição Operacional A operação do PGP é feita através de cinco serviços básicos: autenticação, confidencialidade, compressão, compatibilidade de e-mail e segmentação. Estes são combinados conforme as necessidades do usuário. [Stallings, 2011] 3.3.1 Autenticação A autenticação, ou assinatura digital, serve para comprovar a identidade de uma pessoa, podendo ser comparado à assinatura comum em documentos. No PGP, a assinatura digital é criada utilizando-se um algoritmo de chave assimétrica, DSS, em conjunto com uma função de hash, o SHA-1, para gerar o resumo da mensagem. Na versão original do PGP era usado o RSA em conjunto com o MD5. A operação consiste nos seguintes passos: 1- Cria-se a mensagem a ser transmitida. 20 2- Aplica-se o algoritmo SHA-1 na mensagem original obtendo um resumo (message digest) com tamanho de 160 bits. 3- Este resumo é criptografado utilizando o algoritmo de chave assimétrica com a chave privada do remetente e ao resultado desta operação concatena-se a mensagem original, obtendo-se a mensagem a ser enviada. [Stallings, 2011] Figura 3.1 - Processo de criação da assinatura digital. Fonte: (Atvars et al., 2008) Ao receber a mensagem, o procedimento para lê-la é: 1- Extrair da mensagem recebida a parte correspondente ao resumo criptografado. 2- Aplicar o algoritmo de chave assimétrica com a chave pública do remetente para decifrar o resumo. 3- Aplicar o algoritmo de código hash (SHA-1) sobre a mensagem para verificar se o código obtido é o mesmo que o que estava criptografado junto a mensagem. A autenticação desejada é provida neste esquema através da criptografia de chave pública. Caso o resumo decifrado com a chave pública do remetente seja o mesmo resumo obtido aplicando-se o SHA-1 na mensagem original a mensagem é considerada autêntica. 21 O PGP ainda permite a utilização de assinaturas separadas o que se torna importante no caso de ser necessário que mais de uma pessoa assinem uma mensagem. Neste caso, as assinaturas podem ser feitas independentemente, evitando que cada nova assinatura assine não só a mensagem, mas as assinaturas anteriores também. Quando uma assinatura é criada criptografando-se o message-digest, o timestamp da criação da assinatura é criptografado junto ao message-digest para evitar ataques do tipo Replay. 3.3.2 Confidencialidade A confidencialidade no PGP é implementada através de algoritmo de chave simétrica, podendo ser o CAST-128, o IDEA ou o DES triplo com três chaves, juntamente com um algoritmo de chave pública, o ElGamal ou o RSA (para compatibilidade com versões antigas), para resolver o problema do compartilhamento da chave simétrica. Esta função pode ser obtida através dos seguintes passos: 1- O remetente cria a mensagem e gera uma chave de sessão para ser utilizada apenas com esta mensagem. 2- A mensagem é criptografada com CAST-128, IDEA ou DES Triplo usando a chave de sessão. 3- A chave de sessão é criptografada com o ElGamal usando a chave pública do destinatário. Ao resultado obtido, concatena-se a mensagem. Figura 3.2 - Geração da mensagem criptografada no PGP. Fonte: (Atvars et al., 2008) O destinatário, por sua vez, deve agir da seguinte maneira: 22 1-Separar da mensagem a parte correspondente a chave de sessão criptografada e decriptografá-la usando o algoritmo de chave pública com sua chave privada. Com isso recupera-se a chave de sessão. 2-Tendo em mãos a chave de sessão, basta decifrar a mensagem com algoritmo correspondente. A vantagem de se utilizar a combinação de criptografias de chave simétrica e assimétrica é obter um método rápido e ao mesmo tempo seguro para criptografar uma mensagem. A criptografia simétrica produz texto cifrado com uma velocidade superior ao da criptografia assimétrica. Por sua vez a criptografia de chave assimétrica produz um texto cifrado mais seguro do que o da criptografia simétrica. Figura 3.3 - Processamento para decifrar uma mensagem no PGP. Fonte: (Atvars et al., 2008) O uso da chave de sessão no PGP é uma vantagem, pois a chave é utilizada uma única vez. Mesmo que se descubra a chave de sessão, ela não comprometerá futuras comunicações entre o remetente e o destinatário. [Stallings, 2011] Confidencialidade e Autenticação Quando os serviços de confidencialidade e autenticação são usados em conjunto o remetente deve primeiro assinar a mensagem e para depois cifrá-la. Esta ordem é preferível de ser usada por ser mais conveniente guardar uma assinatura digital junto ao texto decifrado ao qual ela se refere a ter que guardar a assinatura e a mensagem criptografada que ela autentica. Além disso, guardar a mensagem decifrada junto à sua assinatura digital facilita a verificação da assinatura caso seja necessário apresentá-la a uma terceira pessoa, uma vez que ela só depende da chave pública de quem está assinando, ao passo que, caso usássemos a ordem 23 inversa, seria necessário que se utilizasse também a chave privada de quem recebeu a mensagem. [Stallings, 2011] Figura 3.4 – Ilustração do funcionamento do PGP. Fonte: (Stallings, 2011) 24 Convenção: A= remetente B = destinatário M= mensagem H= função hash Z= compressão (ZIP) KPr(x) = chave privada de x KPu(x) = chave pública de x Ks = chave de sessão EC = cifragem simétrica DC = decifragem simétrica EP = cifragem assimétrica DP = decifragem assimétrica Funcionamento dos métodos A Figura 3.4 mostra três formas de funcionamento da arquitetura PGP. Na primeira delas o programa trabalha para fornecer aos usuários autenticidade na forma de assinatura digital, a mensagem passa inicialmente por uma função hash e depois cifrada utilizando a chave privada de A do modelo assimétrico, posteriormente o resultado é agrupado juntamente com a mensagem original e por final ambos passam por uma compressão. Quando a informação chega em B o mesmo fará primeiramente a descompressão, aplicará a chave pública de A para recuperar o hash de M calculado anteriormente e que será agora comparado com o hash de M calculado pelo destinatário, se o resultado dessa comparação for igual, significa que a mensagem chegou íntegra ao destino final. No segundo modelo a confidencialidade é fornecida ao usuário. Inicialmente a mensagem M passa por uma compressão e o resultado passa por uma criptografia simétrica, e ao mesmo tempo a chave privada utilizada para criptografar simetricamente ainformação é cifrada com a chave pública de B. Quando o B receber a mensagem, o mesmo utilizará sua chave privada da criptografia assimétrica para recuperar a chave privada do modelo simétrico que será aplicada na outra parte da informação para recuperar a mensagem compressa que então passará por uma descompressão, resultando assim na mensagem original. 25 O terceiro caso é a combinação do primeiro e segundo, para fornecer ao usuário autenticidade, integridade e confidencialidade. Inicialmente a mensagem passa por uma função hash e o resultado é criptografado assimetricamente com a chave privada de A, posteriormente a informação é agregada com a mensagem e depois ambos passam por uma criptografia simétrica e a chave privada do modelo simétrico é ao mesmo tempo cifrada utilizando a chave pública de B. Ao receber a mensagem B aplicará sua chave privada do modelo assimétrico para recuperar a chave privada do modelo simétrico, para que a mesma possa ser aplicada na outra parte da informação, posteriormente será realizada a descompressão para que finalmente possa haver a comparação dos hash gerados em A e B. 3.3.3 Compressão O PGP adota como padrão a compressão da mensagem para diminuir seu tamanho final, o que beneficia tanto o armazenamento da mensagem quanto e envio da mesma por e- mail. O algoritmo utilizado para esta função é o ZIP, usado em vários programas de compressão. A compressão realizada pelo PGP deve ser aplicada depois da assinatura e antes da criptografia. Essa medida é justificada com os seguintes argumentos: • A assinatura deve ser gerada antes da compressão porque é preferível guardarmos a mensagem descomprimida com sua assinatura correspondente para efeito de verificação do que termos que guardar a mensagem comprimida e sua respectiva assinatura. E porque implementações diferentes do algoritmo de compressão podem gerar saídas diferentes conforme é dada maior importância à velocidade ou à taxa de compressão, enquanto que para a descompressão o algoritmo descomprime corretamente, independente da como foi comprimido. Assim, imaginando que o código hash (resumo da mensagem) e a assinatura fossem gerados após a compactação, caso alguém quisesse recompactar uma mensagem para verificar a assinatura só poderia fazê-lo se a mesma implementação da função de compactação fosse utilizada em todas as versões do PGP. • A criptografia deve ser feita após a compressão para aumentar a segurança, uma vez que o código compactado tem menos redundância, o que dificulta a criptoanálise. 26 Figura 3.5- Diagrama de blocos do funcionamento da geração da mensagem no PGP. Fonte: (Stallings, 2011) Figura 3.6- Diagrama de blocos do funcionamento da recuperação da mensagem original no PGP. Fonte: (Stallings, 2011) 27 3.3.4 Compatibilidade de E-mail Alguns programas de e-mail ainda hoje permitem apenas a utilização de blocos informação no formato ASCII. Entretanto, ao utilizarmos o PGP, os blocos criptografados da mensagem final, tanto para a função de assinatura digital quanto para a de confidencialidade, serão compostos de octetos arbitrários de 8. Para prover a compatibilidade de e-mail, o PGP se utiliza da conversão RADIX-64. Na conversão RADIX-64 blocos de 3 bytes (24 bits) da mensagem criptografada são convertidos em 4 caracteres ASCII de 8 bits, resultando em 32 bits, o que corresponde a uma expansão de 33% na mensagem final. Entretanto isso não deve preocupar se lembrarmos que a mensagem que passará pelo RADIX-64 já foi compactada. Além disso, o PGP tem a opção de só utilizar a conversão na parte referente à assinatura digital. [RFC 4880, 2007] A conversão RADIX-64 é feita sem que se analise o conteúdo, ou seja, caso estejamos transmitindo a mensagem sem estar criptografada, mas se aplicamos o RADIX-64 antes de enviá-la, o conteúdo da mensagem será ilegível, o que promove maior confidencialidade. No PGP a conversão RADIX- 64 é aplicada depois que o texto já foi criptografado. [Stallings, 2011] As Figuras 3.3 e 3.4 mostram diagramas de blocos com os algoritmos seguidos pelo PGP para utilizar as funções que foram descritas. 3.3.5 Segmentação e Reconstrução Esta função do PGP particiona as mensagens que ficarem muito grandes para enviá-las por e-mail. Uma vez particionadas e enviadas estes pedaços da mensagem são reconstruídos ao chegarem ao seu destino. Historicamente esta função está ligada a utilização das BBS (Bulletin Board System), que possuíam limites para envio de mensagens. Cada mensagem recebia um Message ID de 32 bits que identificava a mensagem unicamente e não era nunca repetido. Em versões mais recentes do PGP esta função foi retirada. [Stallings, 2011] 3.4 Chaves no PGP 3.4.1 Tipos de Chaves O PGP trabalha com quatro tipos de chaves: Chaves de Sessão, Chaves Públicas, Chaves Privadas e Chaves baseadas em Passphrase. Cada uma delas representa algum tipo de problema a ser trabalhado pelo software de modo a manter o PGP seguro. Passemos então a uma breve discussão sobre cada um destes tipos de chave que o PGP usa. [Stallings, 2011] 28 3.4.2 Chaves de Sessão O PGP utiliza o termo chave de sessão para as chaves que são utilizadas para a criptografia simétrica. Na verdade estas chaves não são verdadeiras chaves de sessão, pois só são utilizadas uma única vez e descartadas. As chaves de sessão utilizadas pelo PGP devem ter 128 bits, no caso de se utilizar a criptografia simétrica com IDEA ou CAST-128, ou 168 bits, para a criptografia com DES Triplo com três chaves. Em ambos os casos é necessário que a geração das chaves atue de modo imprevisível. Para isso o PGP possui um algoritmo baseado no algoritmo especificado no padrão ANSI X12.17, utilizando o próprio algoritmo escolhido para a criptografia de chave simétrica no modo “Cipher Feedback” para geração da chave de sessão. Entretanto, ainda é necessário que sejam gerados números aleatoriamente para que sejam usados como entrada e chave do algoritmo de chave simétrica que gerará a chave de sessão. Estes números são obtidos pedindo-se ao usuário que movimente o mouse ou digite qualquer coisa no teclado. A velocidade da digitação e o próprio texto digitado, ou amostragens da posição do mouse, combinados com as saídas do gerador são suficientes para produzir uma sequência de chaves de sessão completamente imprevisível. [Stallings, 2011] 3.4.3 Chaves de Púbicas e Privadas As chaves públicas e privadas são as chaves utilizadas para a criptografia assimétrica. Quando trabalhamos com criptografia assimétrica é interessante podermos manter mais do que um par de chaves pública/privada. Um exemplo simples da utilidade de termos mais que um par de chaves por usuário seria o caso em que uma chave privada fica comprometida. Neste caso seria necessária a criação de um novo par de chaves. Outro exemplo seria a possibilidade de um usuário querer usar chaves diferentes para comunicação com grupos de pessoas diferentes. O problema em se permitir que um usuário possua mais que um par de chaves se resume a “Como identificar com qual chave uma mensagem recebida de outro usuário foi criptografada?”. Para suprir esta necessidade o PGP atribui um Key ID a cada chave criada. Este Key ID é um número extraído da própria chave, correspondendo aos 64 bits menos significativos da chave pública. Pode ser provado probabilisticamente que este tamanho é suficiente para que a chance de duplicidade do identificador seja muito pequena. 29 Assim, quando uma mensagem é criada com um par de chaves pública e privada, o identificador do par de chaves utilizado deve estar na mensagem. A estrutura de uma mensagem do PGP, é mostradana Figura 3.5. A mensagem fica assim dividida em três partes: a parte correspondente à chave de sessão, a chave correspondente à assinatura digital e a parte de mensagem propriamente dita. As duas primeiras são opcionais. A parte com a chave de sessão é composta pelo Key ID da chave pública do destinatário e pela chave de sessão criptografada com esta chave pública. A parte referente à assinatura digital possui um Timestamp, indicando a data desta assinatura, o Key ID do par de chaves do remetente utilizada, os primeiros 2 bytes do message-digest não criptografado, que servem para verificar se o message-digest foi decifrado com a chave correta, e o message- digest criptografado com a chave privada do remetente. Finalmente, temos a mensagem, com o nome do arquivo, um timestamp com a data de envio, e os dados propriamente ditos. A necessidade de um segundo timestamp nesta parte da mensagem é para garantir que assinaturas enviadas separadas sejam exatamente iguais. Outro problema na utilização de chaves assimétricas é o armazenamento dessas chaves. Seria inviável para um usuário digitar seu par de chaves e a chave pública do destinatário da mensagem cada vez que quisesse criar uma mensagem nova no PGP. Pensando neste problema, o PGP cria os Key Rings. Os Key Rings serão discutidos profundamente mais adiante. No PGP, cada par de chaves assimétricas é composta por dois pares de chaves (menos para as versões antigas que usavam apenas o RSA), uma para a assinaturas digitais com DSS, variando entre 512 e 1024 bits de tamanho, e outra para criptografar as chaves de sessão para prover confidencialidade com ElGamal, variando entre 512 e 4096 bits. Estes dois pares funcionam como um único par para todos os efeitos e são visíveis como sendo um único par. O único motivo para se gerar dois pares de chaves é a divisão do papel do RSA em versões antigas entre o DSS e o ElGamal. Quando um par de chaves é criado, escolhe-se o algoritmo de criptografia simétrica a ser utilizado com ela e apenas este algoritmo será utilizado com este par de chaves. Esta informação faz parte da chave e não pode ser mudada. No caso de chaves mais antigas, quando o PGP só usava RSA e IDEA, as chaves não possuíam essa informação. 30 Figura 3.7 - Estrutura de mensagem no PGP. Fonte: (Stallings, 2011) 3.4.4 Chaves baseadas em Passphrase As chaves baseadas Passphrase são chaves criadas a partir de uma frase digitada pelo usuário. No PGP elas são utilizadas para prover segurança nos Key Rings. Entretanto elas são talvez o ponto mais fraco da segurança do PGP. A Passphrase é solicitada ao usuário quando da criação dos Key Rings. Sua vulnerabilidade está diretamente ligada à complexidade da frase digitada pelo usuário. Isso porque um intruso que descubra a Passphrase de um usuário tem acesso às suas chaves privadas, tornando toda a comunicação desse usuário insegura. [Moreira, 2006] Entre as formas de se “quebrar” a Passphrase estão a força bruta com utilização de um “dicionário de frases” (muito utilizado) e cavalos de tróia que ficam monitorando o teclado para descobrir senhas. 31 3.5 Armazenamento de Chaves (Key Rings) Uma vez criadas às chaves de um usuário, torna-se necessário que elas sejam armazenadas de alguma forma para futuras utilizações. Mais do que isso, é necessário que sejam armazenas de forma organizada e sistemática as chaves públicas dos correspondentes de um usuário. O PGP adota como política criar um par de estruturas de dados para cada usuário, uma para guardar os pares de chaves pública e privada do mesmo e outra para armazenar as chaves públicas de outras pessoas com quem o usuário mantém contato. Estas estruturas são o Private-Key Ring e o Public-Key Ring, mostrados nas Figuras 3.6 e 3.7, respectivamente. Figura 3.8 - Estrutura do Private-Key Ring. Fonte: (Stallings, 2011) Figura 3.9 - Estrutura do Public-Key Ring. Fonte: (Stallings, 2011) O Private-Key Ring serve para o armazenamento dos pares de chave pública e privada do usuário. É composto por 5 campos: • Timestamp: Contém a data de criação do par de chaves. • Key ID: 64 bits menos significantes da chave pública. 32 • Chave Pública: Chave pública deste par de chaves. • Chave Privada: Chave privada deste par de chaves criptografada. • User ID: Um identificador para o dono da chave, podendo ser um nome, e-mail. O campo com a chave pública criptografada é criado com a Passphrase descrita anteriormente. Para tanto o PGP utiliza a Passphrase escolhida pelo usuário, aplicando a função de hash, SHA-1, para gerar um código hash de 160 bits. A Passphrase é descartada então e o código hash é usado como chave para criptografar a chave privada com o algoritmo de chave simétrica escolhido para este par de chaves. O código hash é então descartado e a chave privada criptografada é armazenada no Private-Key Ring. Quando for necessária a utilização da chave o usuário deve digitar a Passphrase correta para que o PGP possa achar a chave para decifrar a chave criptografada. Caso o usuário esqueça a Passphrase, não há como recuperar suas chaves a não ser quebrando a senha por força bruta. O Public-Key Ring serve para armazenar as chaves públicas de pessoas que o usuário conhece. Ela é composta por oito campos: Timestamp, Key ID, Chave Pública, Owner Trust, User ID, Legitimidade da Chave, Certificados e Trust dos Certificados. Serão explicados abaixo os campos Timestamp, Key ID, Chave Pública e User ID. Assim, os campos são: • Timestamp: Data da inserção desta chave. • Key ID: 64 bits menos significantes da chave pública. • Chave Pública: A própria chave pública. • User ID: Identificador do dono desta chave. Ambos Key Rings devem ser indexados pelos campos User ID e Key ID. A indexação pelo User ID é importante para identificarmos a chave da pessoa para quem enviaremos a mensagem quando da criação da mesma. Já o Key ID é importante para a situação inversa, quando se está recebendo uma mensagem criptografada contendo os Key IDs tanto do remetente quanto de um par de chaves pública e privada sua. 33 3.6 Manutenção de chaves públicas Quando lidamos com sistemas de criptografia assimétrica é fundamental que as chaves públicas dos usuários estejam bem disseminadas. Quanto maior a exposição da chave pública, melhor para que outras pessoas a obtenham. Entretanto, torna-se fundamental se prevenir contra falsificações. Uma falsificação acontece quando uma pessoa A distribui uma chave pública como sendo de uma pessoa B, mas que na verdade pertence a A. Desta forma A pode observar toda a correspondência criptografada que for para B em que tenha sido usada a chave falsificada. Além disso, A poderia enviar todas as mensagens recebidas para B criptografando-as com a chave correta de B, o que impediria que tanto B quanto as pessoas que enviaram mensagens com a chave falsa desconfiassem da falsificação. A única maneira de proteger contra chaves falsas é se certificando de sua origem. Isso pode ser feito obtendo-se a chave diretamente da pessoa com quem se quer comunicar, mas nem sempre essa maneira é viável. Outra alternativa seria obter a chave através de um amigo comum, uma pessoa confiável que pudesse garantir a integridade da chave e da qual você já tivesse uma chave pública que você tenha certeza da validade. Para tanto, esse amigo deveria assinar, certificar a chave, indicando que aquela chave realmente pertence a pessoa em questão. 3.7 Redes de confiança e Campos de Trust Rede de Confiança é como é conhecida política do PGP para a validação de chaves públicas. O funcionamento depende diretamente
Compartilhar