160 likes | 233 Views
Segurança em Redes - Código Seguro. Introdução. A necessidade de sistemas seguros Segurança Preventiva Princípios de segurança a seguir Modelagem das ameaças Técnicas seguras de codificação. A necessidade de sistemas seguros.
E N D
Introdução • A necessidade de sistemas seguros • Segurança Preventiva • Princípios de segurança a seguir • Modelagem das ameaças • Técnicas seguras de codificação
A necessidade de sistemas seguros • Sistema seguro: um sistema que protege a confidencialidade, integridade e disponibilidade das informações dos clientes, e a integridade e disponibilidade dos recursos de processamento sob controle do proprietário ou administrador do sistema.
A necessidade de sistemas seguros • Vulnerabilidade: um defeito em um sistema que torna impossível – mesmo com a sua utilização adequada – evitar que um invasor usurpe privilégios no sistema do usuário, regule sua operação, comprometa os dados ou receba confiança não concedida.
A necessidade de sistemas seguros • Segurança na Web • Conexão total: do desktop à cafeteira • Computação confiável • Presunção de funcionamento (ex. Telefone, e-mail) • Problema: custo da segurança • Jogo multiplayer X controle de marca-passo • Segurança X confiabilidade (ex. recall, cartão+senha)
A necessidade de sistemas seguros • A vantagem do invasor e o dilema do defensor • O defensor deve defender todos os pontos, o invasor pode escolher o mais fraco • O defensor pode se defender somente de ataques conhecidos, o invasor pode investigar vulnerabilidades desconhecidas • O defensor deve estar constantemente vigilante, o invasor pode atacar a qualquer momento • O defensor deve jogar de acordo com as regras, o invasor pode jogar sujo
Segurança preventiva • Segurança é entediante • A segurança é um desativador de funcionalidades • A segurança é difícil de medir • Não é a principal habilidade ou interesse dos projetistas e desenvolvedores • Não significa criar algo novo e animador
Segurança preventiva • Como fazer • Aprimoramento do processo (projeto, desenvolvimento, testes, distribuição/manutenção) • Questões de segurança nas entrevistas • Modelagem de ameaças • Revisões pela equipe de segurança • Testes específicos (ex. mutação dos dados) • Diretrizes seguras de codificação • Campanha de segurança • Realimentação • ...
Segurança na plataforma Java • Java cryptography extension (JCE) • Java authentication and authorization service (JAAS) • Java secure socket extension (JSSE)
Java • Java cryptography extension (JCE) • Framework para: • Criptografia • Simétrica • Assimétrica • Bloco • Fluxo • Geração e acordo de chaves • Código de autenticação de mensagens (MAC) • Objetivos • Assinatura digital • Funções de resumo (message digest)
Java • Java authentication and authorization service (JAAS) • Serviços de autenticação e controle de acesso sobre usuários • Tecnologia PAM (Pluggable Authentication Module) • Suporte à autorização por usuário
Java • Java secure socket extension (JSSE) • Comunicações seguras pela Internet • Versão Java de SSL (secure sockets layer) e TLS (transport layer security) • Criptografia, autenticação de servidor, integridade de mensagem e autenticação de cliente (opcional)
Java • Buffer overflow: linguagem faz verificação de limites; tipo string • Acesso à arquivos: somente verificações básicas de segurança (ex. Pode testar se a aplicação, no contexto corrente, pode ler ou escrever em um arquivo; não se pode acessar ou mudar permissões ou ACL de arquivos)
Java • Validação de entradas: falta uma classe para expressões regulares • Overflow/underflow e conversões numéricas: o/u não geram exceção; cuidar conversões entre tipos primitivos com casting • Ataques a recursos: não há suporte a limitação de recursos (ex. Alocação de memória)
Java • Validação de origem: validar fortemente a origem de requisições a serviços privilegiados
Cartilha de segurança do CERT.br • cartilha.cert.br