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 B S 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 Aplicação FTP, HTTP, POP Identificação de serviços Transporte TCP/UDP: garantia (ou não) de entrega identificação de processos Rede IP: Roteamento Identificação de máquinas (número IP) 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 Transporte Rede Enlace Captura de senhas de aplicação 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 coloca se comércio eletrônico!!
Soluções Melhorar a segurança Nível de Enlace: uso de switches Melhora, mas não resolve Segurança Física 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 = 2 16 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 usa se k para cifrar um bloco usa se 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 1 64 bits Bloco 2 64 bits Bloco 3 64 bits arquivo 288 Bytes Bloco 4 64 bits Bloco 5 32 bits PADDING 32 bits Chave K Chave K Chave K Chave K Chave K CIFRA CIFRA CIFRA CIFRA CIFRA Bloco 1 64 bits Cifrado Bloco 2 64 bits Cifrado Bloco 3 64 bits Cifrado Bloco 4 64 bits Cifrado Bloco 5 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 Gerador de Bits Pseudo Aleatório Chave K bits da mensagem a ser transmitida...0101011 bits "aleatórios" para XOR...0101011 mesmos bits "aleatórios" para XOR Mensagem...0001110 XOR...0100101 XOR...0001110 Mensagem Recuperada bits da mensagem cifrada
Força dos algoritmos Simétricos Caso AES (simétrico) 128 bits de chave 2 128 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 estima se 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 usa se uma chave ke para cifrar porém, usa se outra chave kd para decifrar inviável deduzir kd de ke e vice versa tornar ke pública e kd privada Distribui se livremente ke Exemplos: RSA, DSA, El Gamal, 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: Ke = (173, 2237243) Para decifrar: e Kd = (25829, 2237243) C= (Msg) mod n Msg = (C) d mod n Cifrar o caractere 'A' (ASCII 65) 65 173 mod 2237243 = 1420954 Recuperar o 'A' (Decifrar): 1420954 25829 mod 2237243 = 65 (aprox. 9 seg)
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 2 256 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 A B Chave Pub de B? E
Problemas na comunicação Não existe garantia de autenticidade Ataque do Homem do meio A B Chave Pub de B? Ke (falso) de B E Chave Pub de B? Ke de B
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