Prévia do material em texto
AULA 3 SEGURANÇA DE REDES DE COMPUTADOR Prof. Luis Gonzaga de Paulo 2 TEMA 1 – INTRODUÇÃO À CRIPTOGRAFIA Desde os primórdios da civilização, a comunicação tem sido um elemento fundamental para a evolução e o progresso, proporcionando a integração, a troca de conhecimentos e experotariências entre culturas. No entanto, a comunicação nem sempre é destinada ao conhecimento público, pois, pelas mais diversas razões, o emissor pode ter o desejo de que apenas um, ou poucos receptores, tenham acesso ao conteúdo da mensagem. Essa situação pode ser encontrada nas mais variadas comunicações, seja em uso militar, finanças, pesquisa, negócios e na comunicação particular. Em virtude dessa restrição, o ser humano começou a utilizar, por meio da comunicação, formas de ocultação do conteúdo de suas mensagens, de modo que somente um conjunto reduzido de comunicadores pudesse enviar e receber mensagens cujo conteúdo compreendiam. Esse procedimento é denominado cifragem ou criptografia – palavra de origem grega que significa escrita oculta. No início, em consequência das restrições da tecnologia, técnicas rudimentares aplicadas à escrita eram empregadas para evitar que as informações fossem acessadas indevidamente. Com o passar do tempo, a criptografia incorporou a matemática e, posteriormente, a computação, tornando- se a principal forma de proteção da informação digital. Na atualidade, a criptografia é uma ciência que concentra os estudos dos princípios e das técnicas de transformação da mensagem ou informação, da sua forma original para outra forma não seja legível a receptores não autorizados, mas que possa ser entendida pelos receptores legítimos. Do ponto de vista computacional, a criptografia é composta de algoritmos que alteram a ordem dos bits dos dados, utilizando, para isso, uma ou mais chaves, ou pares de chaves criptográficas, dependendo do sistema criptográfico escolhido. Leituras recomendadas para essa aula: Tanenbaum, 2011 – Capítulo 8; Stallings, 2015 – Capítulo 2; Forouzan, 2008 – Capítulo 30. 1.1 A criptografia na história O uso mais antigo e documentado da criptografia foi encontrado no Egito, em um conjunto de hieróglifos fora do padrão, datado de cerca de 1900 a.C. 3 Posteriormente, os israelitas exilados na Babilônia, entre 600 a.C. e 500 a.C., escreveram o livro do profeta Jeremias usando cifras de substituição simples. Por volta do ano 60 a.C., o imperador romano Júlio César já utilizava a cifra de deslocamento para criptografar suas mensagens. Na Idade Média, a cultura árabe, com seus matemáticos como al-Khalil, al- Kindi, Ibn Dunainir e Ibn Adlan, desenvolveu estudos de estatística e conseguiu, assim, decifrar vários códigos antigos, contribuindo em muito para a criptografia e para a criptoanálise1. Por volta de 1500, o monge alemão Johann Heidenberg, sob o pseudônimo de Johannes Trithemius, publicou a obra Polygraphiae com a técnica para a esteganografia – forma de ocultação de uma mensagem dentro de outra. Os founding fathers dos Estados Unidos, Thomas Jefferson e James Monroe, cifravam suas cartas com uma roda criptográfica para manter em sigilo suas discussões políticas por volta de 1785. No início do século XX, o engenheiro alemão Arthur Scherbius desenvolveu a máquina de criptografia Enigma, utilizada pela marinha de guerra alemã como a principal forma de comunicação. As mensagens codificadas pela Enigma eram de difícil decodificação, pois era necessário ter outra máquina idêntica e saber qual seria a chave utilizada para a codificação. Em 1928, o exército alemão desenvolveu a versão Enigma G, que possibilitava a troca periódica mensal de chaves, e tinha como diferencial o fato de ser uma máquina elétrico-mecânica que funcionava com um conjunto de três a oito rotores de chaves. Essa Enigma aparentava ser uma máquina de escrever, mas quando o usuário pressionava uma tecla, o rotor da esquerda avançava uma posição, provocando a rotação dos demais rotores à direita, e esse e movimento dos rotores gerava diferentes combinações de cifra. Durante a II Guerra Mundial, os aliados criaram o Colossus, um computador eletrônico, resultado do esforço de engenharia reversa para decifrar as mensagens da marinha e do exército alemão. Porém, o esforço só deu resultado após terem conseguido uma máquina Enigma alemã. O matemático Inglês Alan Turing e seus colegas de Bletchley Park ajudaram a decifrar os códigos alemães com a “Bombe”, uma máquina eletromecânica programável. Esses equipamentos foram inicialmente desenvolvidos como máquinas de decriptografia, porém 1 Criptoanálise é a técnica para recuperar o texto cifrado ou a forma utilizada para a criptografia (chave). 4 passaram a codificar mensagens das forças aliadas. Em função do período de guerra, a criptografia passou a ser largamente utilizada. Em 1948, o matemático e engenheiro americano Claude Elwood Shannon apresentou a Teoria Matemática da Comunicação, responsável por grandes avanços no campo da criptografia e da criptoanálise. No período conhecido como “Guerra Fria”, a criptografia evoluiu significativamente, tanto pelo esforço em ocultar informações nas comunicações como pelo uso de computadores eletrônicos e digitais. Foram desenvolvidos vários métodos para esconder mensagens das estratégias e operações militares, as quais eram criptografadas com diferentes métodos e chaves. 1.2 Objetivos da criptografia A criptografia é uma parte essencial da segurança da informação, e apresenta um vasto conjunto de possibilidades para atender a quatro objetivos principais da segurança: Confidencialidade, permitindo que somente um destinatário autorizado conheça o conteúdo da mensagem cifrada; Integridade, possibilitando que o destinatário seja capaz de determinar se a mensagem foi alterada durante a transmissão; Autenticidade, fazendo com que o destinatário seja capaz de identificar o remetente e verificar quem enviou a mensagem; Não-repúdio, não-revogação ou irretratabilidade, tonando impossível ao emissor negar a autoria da mensagem. Figura 1 – Objetivos da criptografia 5 É bom salientar que nem todos os algoritmos criptográficos são utilizados para (ou conseguem) atender aos quatro objetivos ao mesmo tempo, pois existem algoritmos específicos para cada uma destas funções. Ainda, mesmo em sistemas criptográficos bem concebidos, bem implementados e usados adequadamente, alguns desses objetivos não são possíveis ou desejáveis em algumas circunstâncias, por exemplo: Um remetente de mensagem deseja permanecer anônimo. Os recursos computacionais podem ser limitados para implementar a criptografia desejada ou necessária. Um bom exemplo do uso da criptografia em nossos dias é uma operação de compra pela internet. Vejamos: 1. Disponibilidade: a informação sobre o produto ou serviço que desejamos comprar, tal como preço, forma de pagamento, prazo de entrega, quantidade disponível etc. precisa ser mostrada no momento, no local e da forma que precisamos. 2. Integridade: os valores e as informações da operação de compra que realizarmos não podem ser alterados. 3. Controle de acesso: somente nós, compradores, e o fornecedor do produto ou serviço devemos ter acesso às informações dessa operação. 4. Autenticidade: nós devemos comprovar quem realmente somos para efetuar o pedido e o pagamento. 5. Não-repúdio: nós devemos ter uma forma de confirmar que o pedido e o pagamento foram feitos, e o fornecedor não pode negar isso. 6. Confidencialidade: o conhecimento dos detalhes da operação fica restrito a nós, clientes, e ao fornecedor. TEMA 2 – PROCESSO CRIPTOGRÁFICO A criptografia é um processo que envolve alguns elementos bem definidos, começando pela mensagem, que é submetida ao processamento de um algoritmoem conjunto com as chaves, para gerar a mensagem criptografada ou criptograma. A mensagem original (Texto Plano), um arquivo qualquer, uma mensagem, um documento, um texto, uma imagem ou qualquer outro, cujo conteúdo é legível. Também pode ser chamado de Texto Aberto, Texto Claro ou Texto Legível. O Texto Cifrado é o resultado da submissão do Texto Plano a um 6 algoritmo criptográfico. Esse resultado é o mesmo que Texto Criptografado ou Texto Codificado. Nós podemos definir matematicamente o processo criptográfico como sendo uma coleção K de funções reversíveis e e d, de modo que: Ou seja: M (mensagem) corresponde ao Texto Plano, conteúdo a ser criptografado; C (cifrado) corresponde ao Texto Cifrado, conteúdo oculto a ser descriptografado; e é a função criptográfica; d é a função inversa de e; K é o conjunto ou espaço de chaves criptográficas; os pares (e,d) ∈ K; e (M) = C; d (C) = e. Assim, a cifragem ou criptografia é um modelo para a implementação de um algoritmo criptográfico, de tal modo que: Isso significa que, quando f executa a criptografia (ou a encriptação), temos, para um dado valor de (e, m): E quando f executa a descriptografia (ou decriptação), temos, para o dado valor de (d,c): e = M → C d = C → M d = e-1 f: K x M ⟷ C f(e,m) = e(m) = c f(d,c) = e-1(c) = m 7 TEMA 3 – CIFRAS SIMÉTRICAS A criptografia simétrica é um processo pelo qual a mesma chave criptográfica é utilizada para criptografar e descriptografar. A vantagem de sua utilização é resultar em um processo rápido e relativamente simples. Por outro lado, a necessidade de enviar a chave para o receptor, de forma que esse possa descriptografar a mensagem, torna esse processo vulnerável. Figura 2 – Processo de criptografia simétrica Como já apresentamos, este processo faz uso de um algoritmo criptográfico, função matemática que utiliza uma mesma chave para realizar tanto a encriptação como a decriptação (cifragem/decifragem). Se esse algoritmo é um segredo, dizemos que é restrito. Porém, na atualidade, a maioria dos algoritmos é conhecida do público, e a segurança reside na chave. Geralmente, a publicação do algoritmo é feita para que, ao ser examinado, possíveis falhas sejam identificadas. Um algoritmo restrito pode ter suas falhas descobertas (e usadas) apenas pelos criminosos. A chave criptográfica nada mais é do que um conjunto de valores, números. Portanto, é mais fácil proteger a chave do que o algoritmo criptográfico. Além disso, caso o segredo do algoritmo seja descoberto, todos os dados protegidos por ele passam a ser vulneráveis. Porém, se uma chave é descoberta, apenas os dados protegidos por esta chave estão ameaçados. O processo de geração de chaves é crítico, portanto, e deve considerar a geração de números aleatórios, sem qualquer previsibilidade. Como gerar números verdadeiramente aleatórios é 8 uma tarefa impossível para um computador, usamos os PRNG (pseudo random number generator), ou seja, “geradores de números pseudoaleatórios”. São assim chamados pois, sob as mesmas condições iniciais ou de entrada, são repetíveis. Por isso, é importante obter a máxima variação dessas condições de entrada, que chamamos de semente. O uso de sementes torna o processo mais rápido e aumenta a aleatoriedade da saída. Um atacante pode preferir reproduzir o PRNG e a semente, por isso a composição da semente também deve ser cuidadosamente elaborada. Uma semente com base na posição do cursor, no status da memória, na última tecla pressionada, entre outros parâmetros, é consideravelmente imprevisível, e pode gerar uma chave forte. É importante a aleatoriedade da chave, pois um tipo de tentativa de burlar a segurança é o ataque de força bruta (brute force), que simula todas as possibilidades de valor de uma chave. Para se ter uma ideia, uma chave de 40 bits possibilita 1.099.511.627.776 (cerca de um trilhão) de alternativas, enquanto uma chave de 56 bits contempla 72.057.594.037.927.936 (aproximadamente 72 quatrilhões) de possibilidades. Cada bit adicionado dobra o número de combinações e de tempo gasto para tentar descobrir a senha. A força de um algoritmo criptográfico, isto é, o quão resistente a ataques ele é, se dá em função de diversos fatores, tais como: Confidencialidade da chave: ela deve ser protegida e de conhecimento apenas das partes habilitadas para seu uso; Dificuldade na determinação da chave: seja por meio da adivinhação ou da tentativa de todas as possíveis chaves – brute force; Dificuldade em descobrir o algoritmo criptográfico sem o conhecimento da chave; Possibilidade de decodificar um texto cifrado sabendo como parte dele é decodificada; Conhecimento de características da mensagem em texto claro, que podem ser utilizadas para ajudar a decifrar o texto cifrado. 3.1 Criptografia de bloco Para os conjuntos de dados com tamanho definido, como documentos, imagens e bancos de dados, é possível aplicar uma divisão em blocos de bits em 9 quantidades fixas para, então, submetê-los ao processo de criptografia. Denominamos esse processo de criptografia de bloco, e diversos algoritmos dessa modalidade são usados com frequência. O Electronic Code Book (ECB) é um modo de criptografia de bloco no qual cada bloco de texto simples tem um valor de texto cifrado correspondentemente definido e vice-versa. O arquivo é dividido em blocos, geralmente de 8 ou 16 bytes, e o último bloco pode ser preenchido com bytes aleatórios, caso resulte em uma quantidade diferente de bytes. Em termos de correção de erros, qualquer erro de bit em um bloco de texto cifrado afeta a descriptografia apenas desse bloco. A dependência de encadeamento não é um problema, pois o reordenamento dos blocos de texto cifrado reordenará os blocos de texto simples correspondentes, mas não afetará a descriptografia. Um problema desse modelo é que, usando a mesma chave, se o mesmo bloco de texto simples aparece em dois lugares, o texto cifrado será o mesmo, criando um padrão de repetição. Para evitar essa repetição no texto cifrado, são empregados os modos de realimentação, como na Cifragem de Blocos por Encadeamento (CBC) – Cypher Block Chaining. Esse modelo realiza uma operação XOR do bloco cifrado com o texto puro do próximo bloco, como mostrado na Figura 3. Figura 3 – Modelo criptográfico CBC 10 3.2 Criptografia de fluxo A criptografia de bloco é a mais eficiente, porém não é aplicável a todas as situações. Em uma conversação telefônica ou transmissão de vídeos, por exemplo, formar um bloco para depois criptografá-lo vai gerar um atraso não tolerado pelo serviço. Nesses casos, são utilizadas as técnicas de criptografia de fluxo. Nesse modelo, a cifragem é feita bit a bit, e a cifragem de fluxo é muito mais rápida. Em termos de padrão, a cifragem de bloco é mais utilizada, especialmente para a criptografia de arquivos e de bancos de dados. Já a cifragem de fluxo é usada em conexões seguras da WEB e VPNs. 3.3 Algoritmos de criptografia simétrica Até o início da década de 1970, não existiam padrões para a criptografia. Em 1972, o National Institute of Standards and Technology – NIST, nos Estados Unidos, criou o programa para proteção a computadores e comunicação de dados, com o objetivo de definir um algoritmo criptográfico padrão para permitir interoperabilidade nas comunicações. O NIST lançou um concurso em 1973 para a escolha de um algoritmo padrão, vencido pela IBM. Em 1976, lançou o algoritmo padrão, com pequenas alterações, com o nome DES – Data Encription Standard. Entre 1981 e 1992, o DES foi adotado também pela ANSI e pela ISO. O DES realiza a cifragem com blocos de 64 bits e com chave de 56 bits. O funcionamento do algoritmo inicia-se por uma transposição inicial e segue por dezesseispassos de cifragem que alternam substituição, XOR e permutação de sub-blocos (direita e esquerda). Após esses passos, é feita a transposição final. Para esses 16 passos de cifragem, são utilizadas 16 subchaves distintas, todas derivadas da chave original. Figura 4 – Algoritmo DES 11 Em função da fragilidade do DES (em 1999 teve uma chave quebrada em menos de 24 horas), foi desenvolvido um novo método, o Triple DES ou 3DES, com o mesmo processo sendo executado três vezes, com três chaves distintas. Porém, as operações são realizadas em uma sequência alternada, conforme mostrado na Figura 5. Por meio da mensagem original, é feita a cifragem com a primeira chave (Chave A). Em seguida, o algoritmo decifra o resultado, porém usando uma nova chave, a chave B. Então, é feita uma nova cifra com a chave C, que vai gerar o texto cifrado final. No processo de decifragem, são executadas as operações invertidas para cada uma das chaves utilizadas. Figura 5 – Processo criptográfico com 3DES Em função da fragilidade do DES por consequência do pequeno tamanho da chave, e à complexidade do 3DES, que resultava em lentidão para o processo criptográfico, O NIST – National Institute of Standard and Technology (Instituto Nacional da Padrões e Tecnologia) lançou um concurso para a escolha de um algoritmo de cifra de bloco simétrica. Foi proposto o AES – Advanced Encription System, com a finalidade de ser de uso público, usando chaves de 128, 192 e 256, podendo ser implementado em hardware, em software ou em ambos (apliance). O AES é uma evolução do algoritmo de Rijndael, criado por dois pesquisadores belgas: Vincent Rijmen e Joan Daemen. Ele é um algoritmo rápido que se baseia na Teoria de Corpo de Galois (matemático francês). 12 Para assistir a uma interessante animação do processo, acesse e acompanhe, passo a passo, a execução do algoritmo. Caso não deseje instalar um executável, um vídeo com o mesmo propósito (em inglês) pode ser acessado em . Com a evolução tecnológica, o risco de quebra da criptografia tornou-se uma ameaça crescente, e novos algoritmos vêm sendo criados com base em novos recursos computacionais e, obviamente, na matemática. A tabela 1 apresenta alguns desses algoritmos, sobre os quais vale a pena pesquisar. Um processo de cifragem simétrica deve considerar o uso dos recursos computacionais, influenciando o tempo de execução. Basicamente, esse processo consiste na difusão, ou seja, na distribuição de bits da chave ou da mensagem, e na confusão, isto é, na ocultação da relação entre a mensagem, o criptograma e a chave, com o intuito de dificultar a análise estatística. Um problema grave da criptografia simétrica é o gerenciamento das chaves. Como precisarmos das chaves para recuperar os dados criptografados, devemos garantir que estão seguras, usando dispositivos pequenos, projetados para proteger chaves ou senhas, os tokens. Um token pode ser um chaveiro, um Smart Card (cartão inteligente), um dispositivo USB ou mesmo um acessório ou adorno, como um anel, uma pulseira ou um relógio. A vantagem do token é que não precisa estar disponível ou on-line o tempo todo. Quando a chave for necessária, podemos inserir ou aproximar o token e transferi-la para o computador. Além disso, os tokens podem armazenar várias chaves, ser utilizados para gerar grandes senhas aleatórias e para armazenar essas senhas, com a vantagem de não precisarmos memorizá-las. Tabela 1 – Lista de algoritmos simétricos Nome Autor(es) Publicação NewDES Robert Scott 1985 RC4 Ron Rivest 1987 GOST USSR Gosudarstvenyi Standard 1989 Khufu Ralph Merkle 1990 Khafre Ralph Merkle 1990 Skipjack NIST 1990 IDEA Xuejia Lai & James Massey 1991 MMB John Daemen 1993 Blowfish Bruce Schneier 1994 RC5 w/r/b Ron Rivest 1995 13 TEMA 4 – CIFRAS ASSIMÉTRICAS Para resolver a questão da necessidade de compartilhamento de chaves da criptografia simétrica, foram desenvolvidos os algoritmos de cifra assimétrica ou de chave pública. Esse processo utiliza duas chaves: uma privada, de conhecimento apenas de um dos lados da comunicação ou de uma entidade externa, ou, ainda, de terceiro confiável; e uma pública, que pode ser compartilhada por emissor e receptor da mensagem. Nesse modelo, a chave usada para criptografar (pública) não é a mesma usada para descriptografar (privada). Essas chaves são bastante diferentes: Ke ≠ Kd, porém formam pares e estão relacionadas matematicamente, e o que uma chave encripta, a outra descripta. Podemos fazer essa representação do seguinte modo: e Na prática, o processo de criptografia e descriptografia é bem similar ao da criptografia simétrica: um texto plano é submetido a um algoritmo e à chave pública e, então, é cifrado. O texto cifrado é submetido a uma chave privada e, então, é decifrado. O que muda é o processo de geração e distribuição de chaves, tanto da pública quanto da privada, que é feito por um terceiro confiável, a Autoridade Certificadora – AC, responsável por certificar e distribuir as chaves. 4.1 Algoritmos de criptografia assimétrica Os algoritmos assimétricos considerados práticos e seguros são poucos, tal como o RSA, o El Gamal, o Rabin e o ECC (Criptografia de Curva Elíptica). Os demais são considerados uteis apenas para assinatura digital, ou são inseguros, lentos ou, ainda, requerem chaves muito longas. Um aspecto importante no processo assimétrico é a distribuição ou a troca de chaves, uma vez que há a necessidade de compartilhamento da chave pública. 14 4.2 Distribuição ou troca de chaves O compartilhamento de chaves criptográficas geralmente é feito pelo acordo Diffie-Hellman, que resolve a questão da distribuição de chaves criando uma chave compartilhada. Os interlocutores devem concordar sobre dois grandes números, p (um número primo) e g (um número pseudoaleatório). Nesse caso, p é um número primo gerado por meio de um gerador de números pseudoaleatórios (PRNG), que passa pelo Teste de Fermat. Já o número g é um número gerado por um PRNG, que se relaciona com o valor de p (gde propriedade da RSA Corporation. O funcionamento do algoritmo pode ser definido da seguinte forma: 1. Começamos com a escolha de dois números primos elevados, p e q. Normalmente, estes números devem ser superiores a 10100. Um PRNG escolhe o valor de p, e o teste de Fermat identifica q. 2. Em seguida, calculamos n = p.q com resultado maior que 10200. 3. Calculamos, então, Ø(n) = z = (p-1).(q-1), a função de Euler. 4. Em seguida, escolhemos um número relativamente primo a z. Vamos denominá-lo número e. É fundamental que e não tenha fatores primos comuns com z. 5. Na sequência, calculamos d, tal que e.d mod z = 1 e d