• Nenhum resultado encontrado

Capítulo 3 BioNimbuZ

4.1 Principais Conceitos

Garantir que um sistema é seguro não é uma tarefa fácil, ainda mais se tratando de um sistema distribuído, pois ele possui mais fatores a se considerar do que um sistema que trabalha de forma isolada. É preciso levar em consideração os diversos provedores de nuvens que estão participando da federação, suas características individuais e tecnologias que estão utilizando, de forma a oferecer uma solução que seja de fato segura.

ONational Institute of Standards and Technology (NIST) define a segurança em com-putação como a proteção dos recursos de um sistema computacional, ou seja, proteger a integridade, a disponibilidade e a confidencialidade dos recursos (hardware, software, firmware, dados e informação) [43].

Para entender esta definição é preciso entender a que se refere estas três propriedades, integridade, disponibilidade e confidencialidade, as quais serão descritas nas próximas seções.

4.1.1 Integridade

A integridade é uma propriedade que se refere a confiabilidade dos recursos (hardware, software e dados), e pode ser entendida como a prevenção contra ações indevidas ou não autorizadas que podem afetar estes recursos [44]. Essa propriedade pode ser classificada em [44]:

• Integridade de dados: está ligado à proteção contra modificações, ou exclusão de informações, e se refere diretamente ao conteúdo dos dados. Um usuário que arma-zenou seus dados em uma federação de nuvens espera que eles não sejam modificados por ninguém que não tenha autorização, e deve poder recuperar todas as informa-ções da forma que estavam originalmente;

• Integridade de fonte: a origem da informação deve possuir credibilidade e ser auten-tica para que todos os usuários tenham confiança naquele dado. É possível fazer um paralelo com um jornal que recebe uma indicação de matéria de uma fonte falsa a respeito de algo que não existiu, e mesmo assim publica o texto integral. Neste caso, houve integridade de dados, pois o texto foi publicado da forma que foi recebido, porém não houve integridade de fonte, pois não foi possível verificar a veracidade das informações;

• Integridade de software: refere-se à integridade dos serviços disponibilizados por um provedor de nuvem, que não devem ser modificados por pessoas não autorizadas [45].

Um determinado serviço deve funcionar da mesma forma sempre que for requisitado, a menos que o provedor decida ou autorize alguém a alterá-lo.

Os mecanismos de integridade podem ser divididos em duas classes, os de prevenção e os de detecção. Os mecanismos da primeira classe basicamente se encarregam de bloquear as tentativas não autorizadas de alterar um dado, por exemplo, um usuário que não possui autorização e quer modificar um arquivo, ou talvez até tenha autorização para algumas operações e não para outras. Sistemas de autenticação e controle de acesso são representantes dessa classe [45].

Já os mecanismos da segunda classe tem como objetivo informar quando os dados não estão mais confiáveis. Para fazer isto, podem analisar os eventos do sistemas (como ações dos usuários) ou verificar os próprios dados para procurar indícios de violação [45]. Esses mecanismos podem ainda aplicar algoritmos de correção para que os dados voltem a um estado confiável.

A integridade está intimimamente ligada a confidencialidade, porém é muito mais ampla, pois leva em consideração a origem dos dados (como e quando foram obtidos), o armazenamento (é necessário saber se os dados foram armazenados corretamente) além da autorização e da autenticação (também presentes na confidencialidade) [46].

4.1.2 Disponibilidade

É possível definir disponibilidade como sendo a medida de probabilidade de um sistema não estar em falha em um determinado instante de tempo [46], ou como a capacidade de utilizar a informação ou recurso sempre que desejado [44].

No paradigma de computação em nuvem o usuário deve possuir os recursos que quiser e sempre que for necessário, por isso a disponibilidade é um conceito fundamental quando se fala em segurança de nuvem federada.

A disponibilidade deve ser tratada em dois âmbitos diferentes, o primeiro refere-se a disponibilidade do recurso, ou seja, caso um provedor de nuvens não esteja respondendo, deve haver um mecanismo de tolerância a falhas para permitir o uso de outros provedores, tornando transparente para o usuário a migração de um provedor para o outro. O outro ponto que deve ser levado em consideração é que um usuário não pode ter um serviço

negado caso esteja autorizado a acessá-lo, para tanto, é necessário que a autenticação e a autorização sejam feitas de forma correta, não deixando que ocorram casos de violação de disponibilidade nesse sentido.

4.1.3 Confidencialidade

Uma possível definição para confidencialidade é a ausência de conhecimento a respeito de informações não autorizadas [47], isto é, dados e informações protegidas só devem ser acessadas por pessoas autorizadas. Tanto empresas como o governo possuem dados confidenciais e querem restringir o acesso a algumas informações, como dados militares ou patentes de novas tecnologias, o que motivou a criação de diversas estratégias como a criptografia [48], e modelos de controle de acesso [49] [50] que serão melhores explorados ainda neste capítulo.

Para que seja garantida a confidencialidade, dois conceitos são fundamentais, o de autenticação e autorização [51]:

• Autenticação: é o processo que determina se a identidade de um usuário é legítima, e para isto, deve ser baseada em um ou mais dos seguintes fatores:

– Algo que o usuário conhece, como por exemplo uma senha ou identificação única;

– Algo que o usuário possui, como uma chave;

– Alguma característica do usuário, como uma impressão digital ou padrão da retina.

• Autorização: é o processo que diz se um usuário pode ter acesso a um determinado recurso ou não. Para que a autorização seja efetiva ela depende da autenticação, pois se um sistema não é capaz de garantir que um usuário é quem ele realmente diz ser, não é possível determinar corretamente se ele possui acesso ou não a determinado recurso.

A confidencialidade dos dados portanto, está diretamente relacionada a autenticação de um usuário, pois é através dela que é possível determinar o que um usuário está autorizado ou não a realizar. A confidencialidade de software também é importante para a segurança geral do sistema, e consiste na confiança de que um processo ou aplicativo específico irá lidar com as informações do usuário de forma segura. As aplicações de software que interagem com os dados do usuário devem ser certificadas para não introduzir riscos, pois o acesso não autorizado pode tornar-se possível através da exploração de uma vulnerabilidade nestas aplicações [52].

As ameaças à confidencialidade são maiores na computação em nuvem devido ao grande número de dispositivos, aplicações e pontos de acesso aos serviços envolvidos, tornando assim um obstáculo para a completa adoção deste paradigma por diversas em-presas e entidades que possuem informações confidenciais.

Dessa forma, o primeiro passo que um sistema deve realizar para garantir estas três propriedades de segurança é a utilização de um controle de acesso, que pode estar embu-tido dentro do sistema, pode ser incorporado à aplicação ou ainda ser implementado por pacotes de segurança [51]. A próxima seção abordará as principais questões envolvendo o controle de acesso.

Documentos relacionados