UNIVERSIDADE ESTADUAL DE LONDRINA DEPARTAMENTO DE COMPUTAÇÃO TRABALHO DE CONCLUSÃO DE CURSO SEGURANÇA DE APLICAÇÕES NA WEB Aluno: Thiago Augusto Lopes Genez Orientador: Prof. Dr. Mario Lemes Proença Jr. SUMÁRIO Introdução Conceitos Básicos de Segurança Os Ataques Algoritmos Criptográficos Protocolos de Segurança Identificação Digital Ferramentas de Auditoria de Segurança Conclusão INTRODUÇÃO Aplicação WEB: Acessada por um navegador WEB Meio de comunicação O canal é inseguro Internet Comércio Eletrônico (E-commerce) Transações Bancárias (Banking on-line) INTRODUÇÃO Necessidade da Segurança Falta de segurança básica facilita os ataques Cada dia novos ataques são descobertos Consequência dos ataques Divulgação dos dados confidenciais “Quebra” do sigilo Perda da confiabilidade pelo usuário. Interrupção do serviço; transações fraudulentas; roubo ou modificação de dados INTRODUÇÃO Soluções: Criptografia; Protocolos criptográficos; Identificação digital; Ferramentas de auditoria. Objetivo Garantir que as informações mantenham-se intactas e protegidas durante a sua transmissão na Internet. Garantir um ambiente WEB seguro. CONCEITOS BÁSICOS DE SEGURANÇA Serviços disponibilizados pela segurança: Autenticação Confidencialidade Integridade Não-repúdio Controle de Acesso Disponibilidade CONCEITOS BÁSICOS DE SEGURANÇA CARACTERÍSTICAS DOS ATAQUES •Comportamento dos ataques ATAQUES Motivos dos ataque na WEB Páginas dinâmicas Código executados no cliente (script client-side) Problema: Entrada dos dados não são tratados Dados armazenados em Cookies 1. 2. 3. 4. Tipos de Ataques na WEB: Ataque de força bruta Ataque do Homem do Meio (Man-in-the-middle) XSS (Cross Site Scripting) Injeção SQL ATAQUES 5. CSRF (Cross-site reference forgery) 6. Phishing 7. DNS Spoofing 8. Clickjacking 9. Negação de Serviço (DoS) ALGORITMOS CRIPTOGRÁFICOS Origem etimológica grega: Ckryptós “escondido” Gráphein “escrever”. Objetivo: Texto legível Cifra texto ilegível Divididos em: Simétrico Assimétrico Hash ALGORITMOS CRIPTOGRÁFICOS SIMÉTRICOS Algoritmo Bloco Chave Informações RC4 Fluxo 1-2048 bits Internet Banking Caixa Econômica Federal, Banco do Brasil, Itaú RC5 32-128 bits 64-128 bits Chave 64 quebrada, chave 72 bits segura RC6 128 bits 128-256 bits Ficou no 4° colocado do AES DES 64 bits 64 bits Defasado, 1998 quebrado por hardware TDES 64 bits 168 bits Comércio eletrônico PayPal AES 128-256 bits 128-256 bits 2001-Rijndael, pagseguro (UOL) Blowfish 64 ou 128 bits 128 bits Plataforma OpenBSD Twofish 128-256 bits 256 bits Ficou no 3° colocado do AES Serpent 128-256 bits 128-256 bits Ficou no 2° colocado do AES ALGORITMOS CRIPTOGRÁFICOS ASSIMÉTRICOS Algoritmo Fornece Chave Informações RSA Criptografia Assinatura digital Troca de Chaves 1024-2048 bits Utilizado na maioria dos certificados digitais DiffieHellman Troca de chaves 512-4096 bits Necessita de mecanismo extra para garantir autenticidade 1024 bits Proposto em 1991 para ser o padrão para assinaturas digitais ECC Criptografia Assinatura digital Troca de Chaves 80-256 bits Desafiar e concorrer o RSA. Usado no DNSCurve ECDSA Assinatura Digital 160 bits Concorrente ao DSA DSA Assinatura Digital ALGORITMOS CRIPTOGRÁFICOS FUNÇÕES HASH Algoritmo Tamanho Hash Informações MD5 128 bits Não é resistente a colisão (2008) MD6 512 bits Não avançou para a segunda fase do concurso SHA-3 em julho 2009 SHA-1 160 bits Não é resistente a colisão SHA-2 224, 256, 384, 512 bits Nenhum tipo de ataque foi relatado e a partir de 2010 todas agencias federais USA tem que substituir o SHA-1 para SHA-2 SHA-3 224, 256, 384, 512 bits Concurso proposto pela NIST. (andamento na 2° fase, resultado sairá em 2012) PROTOCOLOS DE SEGURANÇA Protocolos Ação Fornece Informações SSL/TLS Entre as camadas de Transporte e a camada de aplicação Criptografia (três tipos), Certificados Digitais •Podem acoplar protocolos de alto nível: Ex, HTTPS •Ponto a Ponto IPsec Na camada de Rede (pacote IP criptografado) Autenticação, Criptografia e Gerenciamento de chaves • Integrado no IPv6 • Proteção nativa para todos os protocolos acima da camada de rede WS-Security Camada de aplicação Criptografia XML Assinatura XML •Web Services •SOAP •Fim a Fim DNSSec Serviço DNS Autenticação •Protege ataques DNS Spoofing (Falso DNS) DNSCurve Serviço DNS Autenticação Criptografia •Protege ataques DoS PROTOCOLOS DE SEGURANÇA SSL/TLS X WS-SECURITY •Informação está segura no canal •Protege toda a mensagem •Comunicação ponto a ponto •Garante a segurança em todos os estágio da comunicação •Protege somente as porções da mensagem que precisa de segurança •Comunicação fim a fim IDENTIFICAÇÃO DIGITAL Transações eletrônicas: Integridade, autenticidade e confidencialidade Assinatura Digital Bloco de dados criptografado anexado a mensagem Fornece: Autenticação, Integridade e Não repúdio Não garante a confidencialidade IDENTIFICAÇÃO DIGITAL CERTIFICADO DIGITAL Distribuir as chaves públicas de pessoas físicas e/ou jurídicas de forma segura. Autoridade Certificadora (AC) Terceiro Confiável FERRAMENTAS DE AUDITORIA DE SEGURANÇA Protocolos não garante a proteção na lógica da aplicação Vulnerabilidade do software Entrada dados não são validados deixa a aplicação instável Disponibilizar os Cookies do browser Ferramentas de auditoria Age como: “Homem do meio” Manipulações dos pedidos e respostas HTTP/HTTPS Testa a segurança na camada de aplicação Minimiza as vulnerabilidades FERRAMENTAS DE AUDITORIA DE SEGURANÇA Funções\Ferramenta RatProxy Web Scarab Paros Burp Proxy w3af IBM AppScan Licença Livre Sim Sim Sim Não Sim Não Multiplataforma Sim Sim Sim Sim Sim Não Manipula pedidos/resposta HTTP(S) Não Sim Sim Sim Sim Sim Relatório detalhado Sim Não Sim Sim Sim Sim Sugestão para Correção Não Não Não Não Não Sim Suporte SSL/TLS Sim Sim Sim Sim Sim Sim XSS, Injeção SQL, CSRF Sim Sim Sim Sim Sim Sim Análise de Cookies Sim Sim Sim Sim Sim Sim Análise de dados ocultos Não Não Sim Não Não Sim Análise RESTful Não Sim Sim Não Sim Não Ambiente Desenvolvimento Não Não Não Não Não Sim SOLUÇÕES AOS ATAQUES Ataque Meio Proteção Força Bruta Lista Negra, Captcha,Criptografia Assimétrica Homem do Meio SSL/TSL, WS-Security, Certificado Digital, HTTPS, IPSec XSS (Cross Site Scripting) Validando a entrada dados (Nível de aplicação: auditoria de código) Injeção SQL Validando a entrada dados (Nível de aplicação: auditoria de código) CSRF (Cross-site reference forgery) Validando a entrada dados (Nível de aplicação: auditoria de código) Phishing Validando a entrada dados (Nível de aplicação: auditoria de código) DNS Spoofing DNSCurve, DNSSec, IPSec Clickjacking Validando a entrada dados (Nível de aplicação: auditoria de código) Negação de Serviço (DoS) Lista Negra, DNSCurve CONCLUSÃO Base da segurança: Criptografia Comunicação entre usuário final e a aplicação WEB: Navegador WEB (browser) Canal é inseguro Internet Solução: Protocolos Criptográficos Outra solução: identificação digital CONCLUSÃO Com a falta de proteção na lógica da aplicação WEB Entrada de dados não validados Deixa a aplicação WEB instável facilita os ataques Ferramentas de auditoria procura as vulnerabilidades Aplicação WEB segura: Segurança na camada de transporte Segurança na camada de aplicação (lógica de programação) OBRIGADO UNIVERSIDADE ESTADUAL DE LONDRINA DEPARTAMENTO DE COMPUTAÇÃO RELATÓRIO DE ESTÁGIO CURRICULAR UM MÓDULO DE SEGURANÇA PARA AUXILIAR A COMUNICAÇÃO ENTRE APLICAÇÕES QUE UTILIZAM REDES Aluno: Thiago Augusto Lopes Genez Orientador: Prof. Dr. Mario Lemes Proença Jr. SUMÁRIO Introdução Terminologia Engenharia do Software Arquitetura Ferramentas utilizadas Visão Conceitual Exemplo de uso em uma aplicação WEB INTRODUÇÃO Módulo Nome: The Rock (“A Rocha”) Desenvolvido em Java Camada de segurança Autenticação, Autorização, Criptografia e Gerenciamento de Sessão Configurações pré estabelecidas Configurações customizadas Implementas as interfaces Objetivo Auxiliar a comunicação entre aplicações que utilizam redes Promover a reusabilidade de código TERMINOLOGIA Domínio (Realm): Banco de dados o qual armazena os componentes para identificar as entidades da aplicação Nome do usuário, permissões, papéis Sujeito (Subject) Representação de um usuário a ser gerenciado pelo módulo Coleção de atributos (Principals) Coleção de atributos que identifica o usuário no módulo Nome ID (identificador) IP TERMINOLOGIA Credenciais Permissão Informações secretas conhecida apenas pelo usuário usado para verificar a sua identidade Representação atômica da capacidade de executar uma ação Papéis (Roles) Conjuntos de permissões ENGENHARIA DO SOFTWARE Metodologia baseada: ICONIX Modelo de Domínio Modelo de Caso de Uso Diagrama de Sequencia ENGENHARIA DO SOFTWARE MODELO DE DOMÍNIO ARQUITETURA FERRAMENTAS UTILIZADAS JAAS: API para autorização e autenticação em Java JCA e JCE: API de criptografia em Java SLF4J: API de Logs em Java Eclipse: Ambiente de desenvolvimento Subversion: Controle de versão Apache Maven: Ferramenta para gerenciamento e automação de projetos em Java. JUnit: API para realizar testes da linguagem Java VISÃO CONCEITUAL EXEMPLO DE USO EM UMA APLICAÇÃO WEB EXEMPLO DE USO EM UMA APLICAÇÃO WEB COMO USAR? Criar um .jar do módulo The Rock Adicionar o.jar na aplicação WEB que o utilizará Configurar o arquivo web.xml Determinar o The Rock como o filtro principal Indicar qual o domínio que contem os usuários Indicar quais página da aplicação que o usuário deve estar autenticado Indicar quais página da aplicação que o usuário pode acessar Utilizar as classes desenvolvidas Implementar as interfaces configuração customizada EXEMPLO DE USO EM UMA APLICAÇÃO WEB WEB.XML <filter> <filter-name>TheRockFilter</filter-name> ... [main] realm = dao.RealmMySql [filters] roles.naoAutorizado = /naoAutorizado.jsp [urls] /admin/** = authc, roles[admin] /restrita/** =authc ... </filter> <filter-mapping> <filter-name>TheRockFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> EXEMPLO DE USO EM UMA APLICAÇÃO WEB TAGS CUSTOMIZADAS JSP <%-- Importanto as tag TheRock no JSP --%> <%@ taglib prefix="rock" uri="/tags/theRockTag" %> <rock:temRole name="admin">......</rock:temRole> <rock:semRole name="admin">......</rock:semRole > <rock:semPermissao name="usuario:remover“>..</rock:semPermissao> <rock:temPermissao name="usuario:remover“>..</rock:temPermissao> <rock:autenticado>.....</rock:autenticado> <rock:naoAutenticado>.....</ rock:naoAutenticado > <rock:usuario>....</rock:usuario> <rock:visitante>....</rock:visitante> <rock:principal/>... <rock:principal/> OBRIGADO