Conceitos de Criptografia e o protocolo SSL TchêLinux Ulbra Gravataí http://tchelinux.org/gravatai Elgio Schlemer Ulbra Gravatai http://gravatai.ulbra.tche.br/~elgio 31 de Maio de 2008 Introdução ● Início da Internet – poucas pessoas – uso restrito – relação de confiança – incidente com Morris Worm – segurança ganha atenção: nasce o CERT Introdução ● Internet cresce e explode nos anos 90 ● Internet passa a ser opção de negócios – Porém ela não foi concebida para isso – possui muitos problemas de segurança – não ideal para relações de sigilo e confiança Problemas de Segurança A S B Internet C D Problemas de Segurança ● Pacotes passam por vários pontos – ● técnicas de roteamento IP Pacotes podem ser: – lidos (interceptados), alterados ou falsificados – Forjados: TCP/IP não provê autenticação Modelo TCP/IP FTP, HTTP, POP ● Identificação de serviços ● Aplicação TCP/UDP: garantia (ou não) de entrega ● identificação de processos ● Transporte IP: Roteamento ● Identificação de máquinas (número IP) ● Rede Enlace Ethernet ● Identificação de placas de rede (número MAC) ● Técnicas de violação de dados (nível de enlace) ● Aplicação Transporte Rede Enlace ● Sniffer – Ferramenta para olhar pacotes alheios – Solução: instalar switches? Sniffer sobre switch: – arp spoofing, mac flooding, mac spoofing, icmp redirect, dhcp spoofing são alguns exemplos de técnicas para switches Técnicas de Violação de Dados (Nível de Rede e Transporte) ● Aplicação Transporte Rede Enlace IP spoofing – Falsificação de um número IP – finge ser outra máquina (autenticação!!) ● captura de sessões (TCP) ● Solução: – Regras de firewall (não 100%) Técnicas de Violação de Dados (Aplicação) ● Aplicação Captura de senhas de aplicação – Transporte Rede Enlace ● através de sniffers DNS spoofing – falsificação de DNS – atender pelo domínio Teoria do Caos ● ● A Internet é totalmente insegura – todo mundo vê – todo mundo mexe – ninguém tem certeza de quem é quem neste cenário colocase comércio eletrônico!! Soluções ● Melhorar a segurança – Nível de Enlace: uso de switches ● – Segurança Física ● – Melhora, mas não resolve só pessoas autorizadas Introduzir segurança na Aplicação ● através do uso de criptografia Princípios de Criptografia ● usada até mesmo em guerras medievais – cifra de César – Variação da César: chave k ● segredo na chave ● texto legível para quem conhece k Ataques à criptografia ● Criptoanálise: descobrir fragilidades – ● Exemplo: análise de freqüência Força Bruta: Descobrir a chave – testar todas as possibilidades para k – Se chave de 16 bits = 216 possibilidades = 65536 ● um PC testanto 1000 por segundo levaria 1 minuto Tipos de Criptografia ● ● Algoritmos Simétricos – apenas uma chave – A mesma para cifrar de para decifrar Simétricos podem ser: – De bloco – De fluxo Algoritmos Simétricos de Bloco ● Simétricos: uma mesma chave – usase k para cifrar um bloco – usase o mesmo k para decifrar o bloco – Só pode cifrar um bloco inteiro ● não tem bloco inteiro? – – espera mais dados preenche com padding Algoritmos de Bloco Bloco 2 Bloco 3 Bloco 4 64 bits 64 bits 64 bits 64 bits Bloco 5 32 bits arquivo 288 Bytes Chave K Chave K Chave K Chave K PADDING 32 bits Bloco 1 Chave K CIFRA CIFRA CIFRA CIFRA CIFRA Bloco 1 Bloco 2 Bloco 3 Bloco 4 Bloco 5 64 bits Cifrado 64 bits Cifrado 64 bits Cifrado 64 bits Cifrado 64 bits Cifrado arquivo CIFRADO com 320 Bytes (incluindo Padding) Algoritmos Simétricos de Fluxo ● Simétricos: uma mesma chave ● Porém pode cifrar bit a bit – não precisa de um bloco – Usa XOR!! ● Ex: RC4 Estudo de caso: RC4 Chave K Gerador de Bits Pseudo Aleatório Mensagem XOR bits "aleatórios" para XOR ...0100101 bits da mensagem cifrada ...0101011 ...0001110 ...0101011 bits da mensagem a ser transmitida Gerador de Bits Pseudo Aleatório XOR Chave K mesmos bits "aleatórios" para XOR ...0001110 Mensagem Recuperada Força dos algoritmos Simétricos ● Caso AES (simétrico) – 128 bits de chave – 2128 possíveis chaves = 340.282.366.920.938.463.463.374.607.431.768.211.456 – Força bruta: bilhões de anos – Com 256 bits, segurança eterna ● estimase que nem todo o silício do Universo seria suficiente para construir uma máquina que quebrasse 256 bits simétricos Tipos de Criptografia ● Algoritmos Simétricos ● Algoritmos Assimétricos – uma chave é usada para cifrar – outra chave é usada para decifrar Algoritmos Assimétricos ● usase uma chave ke para cifrar ● porém, usase outra chave kd para decifrar ● inviável deduzir kd de ke e viceversa ● tornar ke pública e kd privada ● Distribuise livremente ke ● Exemplos: RSA, DSA, ElGamal, etc Uso da criptografia ● Uso de algoritmos Assimétricos ● Servidor fornece sua chave pública (Ke) – mas mantém segredo quanto a privada (Kd) ● Cliente cifra dados com Ke do servidor ● Envia os dados cifrados ● Servidor abre com Kd Problemas ● ● Algoritmos Assimétricos são onerosos – alto custo de processamento – operações não suportadas pela ULA Estudo de caso: algoritmo RSA de 32 bits – Ke = (e,n) => Ke = (173, 2237243) – Kd = (d,n) => Kd = (25829, 2237243) Estudo de Caso: RSA Para cifrar: e C= (Msg) ● Kd = (25829, 2237243) Para decifrar: Msg = (C) d Cifrar o caractere 'A' (ASCII 65) – ● mod n Ke = (173, 2237243) 65173 mod 2237243 = 1420954 Recuperar o 'A' (Decifrar): – 142095425829 mod 2237243 = 65 (aprox. 9 seg) mod n Força dos algoritmos Assimétricos ● Caso RSA (assimétrico) – – 512 bits de chave ● significa N de 512 bits, logo P e Q são de 256 bits ● Achar P de 256 bits não significa testar 2256 bits! Assimétrico precisam de chave muito maior para serem seguros (atualmente pelo menos 1024 bits) ● Simétrico de 128 bits: ÓTIMO ● Assimétrico de 128 bits: PÉSSIMO Complicações dos Assimétricos ● Demorado mesmo com otimizações (Demonstrar) ● números além da capacidade da ULA ● Porque não se usa Simétrico? – ● como estabelecer uma chave k comum? Solução: – usar o assimétrico apenas para trocar chave – cifrar tráfego com simétrico Problemas na comunicação ● Não existe garantia de autenticidade – Ataque do Homem do meio B A Chave Pub de B? E Problemas na comunicação ● Não existe garantia de autenticidade – Ataque do Homem do meio B A av Ch B de b d P u Ke ) d e B Ch lso av e ? fa B de e B ub ? e P ( Ke E Solução ● ● Assinar a chave pública – Cliente deve confiar em quem assina – inviável falsificar assinatura Certificadoras: – Como cartórios digitais Protocolo SSL ● Servidor: – cria par de chaves Ke e Kd – Pede que certificadora assine a pública Ke ● – gera um certificado (várias informações) envia Ke assinada por uma certificadora para cliente Protocolo SSL ● Cliente: – recebe chave Ke do servidor – verifica assinatura – cria chave de sessão k – cifra k com Ke do servidor – envia k cifrada com Ke Protocolo SSL ● ● ● No início do protocolo, cliente e servidor decidem quais algoritmos irão usar Muitas opções: – DES, 3DES, AES128, AES256, RC4, etc – Preferência por algoritmos de fluxo – Importante: algoritmos de bloco como o AES também funcionam como fluxo (conversão) Demonstração com Navegador Conclusões ● Protocolo SSL é seguro – desde que seja verificada autenticidade – certificadoras permitem autenticação – quem escolhe "confiar" nas certificadoras é o fabricante do meu navegador – certificados são pagos!! – qualquer um pode ser uma certificadora Conclusões (continuação) ● ● Possível usar SSL sem certificadora – SSH por exemplo – certos cuidados Navegador informa assinatura inválida – desconhecimento propicia Homem do Meio – muitos continuam navegando Conclusões (continuação) ● ● Homem do meio é mais sofisticado – na prática, enviar emails funciona – as pessoas clicam nos links falsos Ideal seria cliente ter par de chaves – Bancos fazem isto para empresas – usuários exigira treinamento Conclusões (continuação) ● Outros assuntos de criptografia – – Algoritmos de HASH ● assinaturas digitais ● banco de dados ● senhas de sistema operacional (Viva o Linux) Assinaturas digitais ● pela inversão do assimétrico Conclusões (continuação) ● Algoritmos Assimétricos são seguros? ● Desafio: – P multiplicado por Q resulta em N. – Se N = 39.351.741.689.270.519 – Quais os valores de P e Q? ● ● DICA: P e Q são de 32 bits. Hoje se usa P e Q de, pelo menos, 512 bits Conceitos de Criptografia e o protocolo SSL Elgio Schlemer http://gravatai.ulbra.tche.br/~elgio http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=7812