Technè

Tecnologia & Experiência do Usuário no C.E.S.A.R

Autorização, Autenticação e Auditoria: é tudo muito parecido.

Posted by Felipe Ferraz On setembro - 9 - 2010

Faça Software Seguro vc Também

Continuando nossa serie, vamos falar agora de 3 conceitos amplamente discutidos dentro de Segurança de Software, Autenticação, Autorização e Auditoria. Há quem afirme que uma mescla desses 3 termos podem garantir algum nivel de segurança para o seu sistema. Já outros acreditam que Autenticação e Autorização são a mesma coisa “Tá vendo?! eu disse que era so colocar a tela de login!!” e que Auditoria esta diretamente relacionada a ferramentas de log do sistema “Há! falei que o framework resolveria tudo“.

A verdade é bem diferente :) , por tras do chamado 3A´s existem conceitos e necessidades complementares e que será de vital importância no entendimento da segurança necessária para sua aplicação. Vamos a eles:

- AUTENTICAÇÃO

Desde sua criação, e posterior popularização, a Internet sempre se mostrou com um mecanismo de anonimato, onde pessoas poderiam passar-se por outras ou até mesmo não passar por ninguém.

“Na Internet, ninguém sabe que você é um cachorro” por Peter Steiner.

Assim, temos que Autenticação é o processo onde uma pessoa ou programa de computador prova a sua identidade com o intuito de obter alguma informação ou executar alguma ação.

A identidade de uma pessoa é uma simples abstração, um identificador em uma aplicação específica, por ex. Provar, ou validar, consiste na parte mais importante desse conceito, é geralmente feita através de uma informação conhecida, como uma senha, ou palavra chave, ou um cartão com identificação visual, ou algo único com relação a sua aparência, impressões digitais, íris ou até mesmo amostra de DNA.

- AUTORIZAÇÃO

Autorização é o processo de dar permissão para fazer ou ter algo. Em Sistemas de múltiplos usuários um administrador de sistemas definirá quais usuários terão acesso e quais privilégios de execução esses terão.

Considerando que alguém conseguiu se Autenticar em um sistema, o sistema pode necessitar identificar quais recursos a entidade poderá receber durante a sessão atual. O mecanismo de autorização é muita vezes visto como composto de dois momentos:

  • Ato de atribuir permissões ao usuário do sistema no momento de seu cadastro, ou posterior.
  • Ato de checar as permissões que foram atribuídas ao usuário no momento de seu acesso.

- AUDITORIA

O processo de auditar um sistema é um dos mais importantes mecanismos de segurança que se pode fazer uso na hora de examinar, verificar e corrigir o funcionamento geral de um sistema. Conceitualmente o processo de auditar um sistema verifica se o mesmo está executando suas funções corretamente.

Existem duas etapas básicas de Auditoria, que na verdade, são apenas variações do mesmo conceito.
A primeira forma trata do registro de mudanças no estado do sistema, ou seja, eventos e/ou mudanças de estados são registrados. A segunda forma seria um processo sistemático que examina e verifica o sistema, trata-se de uma consulta ao ambiente para avaliação do funcionamento do mesmo, ou seja, verifica-se se o sistema está funcionando de forma correta.

Para um processo de auditoria ser eficiente, ambas as formas mencionadas precisam estar construídas e sintonizadas, é impossível executar uma avaliação sistemática de um sistema ou de um evento se esses não foram registrados, e mais, se os estados do sistema não forem gravados, não há a menor necessidade de se guardar, também, as mudanças no sistema, assim vamos consideramos que uma auditoria será satisfatória se esta:

  • Registrar os estados do sistema.
  • Verificar, sistematicamente os estados armazenados.
  • Permitir que os registros sejam checados.

Bem, por enquanto vamos ficar por aqui. Até a próxima.

Security Requirements: Requisitos de Segurança – oi? Segura who?

Posted by Felipe Ferraz On agosto - 10 - 2010

Faça Software Seguro vc Também

Talvez não seja de conhecimento geral que existe uma grande defasagem quando se fala em Segurança de Software ou Software Seguro, mas é verdade tal deficiência existe. Estudos como os de Joseph Yoder(Architectural Patterns for Enabling Application Security) mostram que desenvolvedores, na maior parte das vezes, tendem a se preocupar com o desenvolvimento, primeiramente, das funcionalidades… digamos mais visíveis de uma aplicação, relegando qualquer referência a Segurança à um segundo plano.

Tal situação se torna especialmente interessante quando se constata que adicionar Segurança NÃO é apenas “Adicionar uma tela de login” ou “Adicionar um framework novidade fácil de usar” ou “deixa para o pessoal de redes se preocupar com isso“. Não. Segurança passa por um longo caminho que se inicia desde a elicitação dos Requisitos da Aplicação e vai até os últimos momentos do desenvolvimento, passando pela própria estruturação da Arquitetura do Sistema.

Pensando nisso esse post será o primeiro post de uma série chamada “Faça Software Seguro vc Também”.

Para entendermos requisitos de segurança e seus tipos, primeiro precisamos entender os conceitos relacionados a Segurança de Software e como estes se relacionam, ou, como Donald Firesmith chama em sua sua coluna : Specifying Reusable Security Requirements, Security Engineering. Vamos a eles.

Para começar a figura a cima, que pode ser encontrada na coluna do D. Firesmith, juntamente com as definições abaixo, trazem um panorama geral dos primeiros conceitos que vamos começar a entender.

Asset ou Bem: É qualquer coisa que deve ser protegida de um mal.
Attack ou Ataque: É um tentativa não autorizada de causar um mal a um bem.
Attacker ou Aquele-que-realiza-ataque: É um Humano, Processo, Programa, Dispositivo ou outro sistema que causa um ataque com o intuito de causar um mal.
Harm: É um impacto negativo associado a um bem, causado por um ataque.
Threat: É uma condição geral, situação ou estado que pode resultar em um ou mais ataques.
Security ou Segurança: É o grau em que um mal a um bem de valor é prevenido, reduzido e propriamente respondindo.
Security Goal ou Objetivo de Segurança: É um objetivo de qualidade que documenta um ou mais objetivos a sere atingindos pelos aspectos de segurança.
Security Policy ou Políticas de Segurança: É uma política de qualidade que dita os critérios de segurança de um sistema.
Security Mechanism ou Medidas de Segurança: É um mecanismo arquitetural ( uma decisão estratégica) que ajuda a preencher os requisitos de segurança.
Security Requirements ou Requisitos de Segurança: É, normalmente, um requisito de segurança que especifica a quantidade e tipo de segurança necessária.
Security Risk ou Riscos de Segurança: É qualquer risco em potencial a um bem.
Security Vulnerbility ou Vulnerabilidades de Segurança: É qualquer fraqueza que aumente a chance de sucesso de um ataque.

Essas definições  são apenas um primeiro passo no entendimento das necessidades gerais de segurança de um sistema. Afinal não é possível proteger algo, contra algo ou alguém que não se sabe como pode atacar não é?

Ou como diria Sun Tzu : If you know the enemy and know yourself, you need not fear the result of a hundred battles.

Nossa batalha está apenas começando.