• Nenhum resultado encontrado

Gestão de políticas de segurança para infra-estruturas críticas

N/A
N/A
Protected

Academic year: 2021

Share "Gestão de políticas de segurança para infra-estruturas críticas"

Copied!
76
0
0

Texto

(1)

U

NIVERSIDADE DE

L

ISBOA

Faculdade de Ciˆencias

Departamento de Inform´atica

GEST ˜

AO DE POL´ITICAS DE SEGURANC

¸ A PARA

INFRA-ESTRUTURAS CR´ITICAS

Hugo Miguel Pimenta Monteiro

MESTRADO EM ENGENHARIA INFORM ´

ATICA

Especializac¸˜ao em Engenharia de Software

(2)
(3)

U

NIVERSIDADE DE

L

ISBOA

Faculdade de Ciˆencias

Departamento de Inform´atica

GEST ˜

AO DE POL´ITICAS DE SEGURANC

¸ A PARA

INFRA-ESTRUTURAS CR´ITICAS

Hugo Miguel Pimenta Monteiro

DISSERTAC

¸ ˜

AO

Projecto orientado pelo Prof. Doutor Alysson Neves Bessani

MESTRADO EM ENGENHARIA INFORM ´

ATICA

Especializac¸˜ao em Engenharia de Software

(4)
(5)

Agradecimentos

Expresso a minha gratid˜ao a todos aqueles que de alguma forma contribu´ıram para a realizac¸˜ao desta dissertac¸˜ao:

• Quero manifestar o meu agradecimento ao Prof. Dr. Alysson Neves Bessani, o meu orientador, pela paciˆencia, pelos seus ensinamentos e coment´arios durante o projecto de investigac¸˜ao;

• Ao Prof. Dr. Paulo Sousa e ao Prof. Dr. Paulo Ver´ıssimo pela motivac¸˜ao dada durante as aulas de Seguranc¸a. O vosso esforc¸o e dedicac¸˜ao foram das principais raz˜oes por ter escolhido este projecto;

• Aos meus pais, um agradecimento muito especial, por tudo o que me deram at´e hoje e me continuam a dar. Sempre se esforc¸aram para dar o melhor aos seus filhos; • Um obrigado ao meu irm˜ao pela motivac¸˜ao em ser cada vez melhor em tudo o que

fac¸o;

• Aos meus colegas, Dan Mihai e Romeu, por me terem acompanhado desde o 1o

ano de faculdade, nos bons e maus momentos nos trabalhos e exames. Foram sem d´uvida os melhores colegas de grupo que se poderia ter;

• Aos meus colegas dos Navigators e LaSIGE, principalmente aos da sala 29, pe-los momentos passados, pelo apoio em todas as minhas d´uvidas pertinentes e pelo ambiente agrad´avel com que me brindaram;

• A todos os professores do Departamento de Inform´atica, por todo o esforc¸o e dedicac¸˜ao em ensinar todos os alunos. S˜ao a raz˜ao por ter continuado e por ter vencido todos os meus obst´aculos em todos os trabalhos e disciplinas;

• Ao Jorge e `a Dulce, meus primos, pela ajuda na escrita desta dissertac¸˜ao forne-cendo-me algum material necess´ario;

• Aos meus amigos, principalmente aos Jovens Sem Fronteiras, por me terem dado sempre a motivac¸˜ao necess´aria para continuar nesta caminhada;

• `A minha fam´ılia, um agradecimento especial, pela atenc¸˜ao e apoio dado, durante estes anos todos;

(6)
(7)
(8)
(9)

Resumo

As infra-estruturas cr´ıticas (ICs) s˜ao cruciais para a nossa sociedade, pois elas contro-lam servic¸os b´asicos como a electricidade, ´agua ou g´as e o seu funcionamento depende muito de sistemas inform´aticos.

Nos ´ultimos anos, estes sistemas inform´aticos tˆem estado a migrar de tecnologias propriet´arias e isoladas para tecnologias ditas comuns, como o TCP/IP, o windows ou o linux, por raz˜oes de eficiˆencia operacional.

Este factor de modernizac¸˜ao esconde um problema muito s´erio, no que diz respeito `a seguranc¸a inform´atica: se colocarmos as infra-estruturas em redes convencionais, pos-sivelmente ligadas, mesmo que indirectamente `a Internet, usando software comum, elas automaticamente passam a ser alvo do mesmo tipo de ataques efectuados aos outros tipos de software.

Recentemente, no contexto do projecto EU-IST CRUTIAL, foram propostos v´arios mecanismos de protecc¸˜ao para ICs. Muitos desses mecanismos assumem a existˆencia de pol´ıticas de controlo de acesso ao n´ıvel de aplicac¸˜ao, que tˆem em conta o estado da infra-estrutura e podem ser modificadas e actualizadas em tempo de operac¸˜ao do sistema. Nesta dissertac¸˜ao apresentamos uma soluc¸˜ao que permite resolver o problema de distribuic¸˜ao de pol´ıticas numa IC em um ou mais dom´ınios, usando um servic¸o de coor-denac¸˜ao confi´avel que garante a comunicac¸˜ao entre os v´arios intervenientes do sistema. Este projecto complementa os trabalhos anteriores no projecto CRUTIAL, respondendo ao requisito de actualizac¸˜ao de pol´ıticas de maneira autom´atica e coordenada.

Palavras-chave: Infra-estruturas cr´ıticas, anteparas distribu´ıdas, coordenac¸˜ao

(10)
(11)

Abstract

Critical infrastructures are crucial for our society because they control basic services such as electricity, water or gas. The operation of these infrastructures depends on com-puter systems.

In the last years, these computer systems have been migrating from proprietary and isolated technologies to common technologies, such as TCP/IP protocols, windows or linux operating systems, for efficiency operation reasons.

This modernization factor hides a very serious problem about computer security: if we put these infrastructures in conventional networks, possibly connected even indirectly to the Internet using common software, they automatically becomes targets of the same types of attacks done to other types of software.

Recently, in the EU-IST CRUTIAL project, various protection mechanisms for critical infrastructures were proposed, many of which assume the existence of application level access control policies, which take into account the state of the infrastructure and can be modified and updated during the system operation.

In this dissertation, we present a solution that solves the problem of distributing poli-cies in a critical infrastructure in one or more domains, using a dependable coordination service that provides certain guaranties on the communication between all the compo-nents of the system. This project complements many of the previous works done in the CRUTIAL project, providing a mechanism for update security policies in an automatic and coordinated way.

Keywords: critical infrastructures, coordination, distributed firewalls

(12)
(13)

Conte ´udo

Lista de Figuras xv

Lista de Tabelas xvii

1 Introduc¸˜ao 1 1.1 Motivac¸˜ao . . . 2 1.2 Objectivos . . . 2 1.3 Metodologia Utilizada . . . 2 1.4 Organizac¸˜ao do documento . . . 3 2 Conceitos Fundamentais 5 2.1 Controlos de Acesso . . . 5 2.1.1 OrBAC . . . 5 2.2 Modelos de Pol´ıticas . . . 7 2.2.1 Modelo Bell-LaPadula . . . 7 2.2.2 Modelo Biba . . . 8 2.2.3 Modelo Clark-Wilson . . . 8 2.3 Anteparas . . . 9 2.3.1 Antepara Tradicional . . . 9 2.3.2 Antepara Distribu´ıda . . . 10

2.3.3 Pol´ıticas de Controlo de Acesso em Anteparas . . . 10

2.4 Espac¸o de Tuplos . . . 11

2.4.1 Definic¸˜ao . . . 11

2.4.2 DepSpace . . . 12

2.4.3 Verificac¸˜ao de Pol´ıticas de Seguranc¸a . . . 12

2.5 Infra-estruturas cr´ıticas . . . 14

2.5.1 Ameac¸as e Vulnerabilidades em IC . . . 15

2.5.2 Arquitectura CRUTIAL para actualizac¸˜ao de pol´ıticas . . . 16

2.5.3 Actualizac¸˜ao coordenada de pol´ıticas . . . 17

2.6 Considerac¸˜oes Finais . . . 18 xi

(14)

3 Algoritmos de actualizac¸˜ao de pol´ıticas coordenadas 19

3.1 Princ´ıpios de Funcionamento . . . 19

3.2 Protocolo de Comunicac¸˜ao . . . 22

3.3 Modelo de Sistema . . . 22

3.4 Actualizac¸˜ao de Anteparas em um Dom´ınio . . . 24

3.5 Actualizac¸˜ao de Anteparas em V´arios Dom´ınios . . . 28

3.6 Tolerˆancia a faltas . . . 32

3.7 Tipos de Actualizac¸˜ao e Comunicac¸˜ao Ass´ıncrona . . . 32

3.8 Limpeza de Lixo . . . 33

3.9 Propriedades . . . 33

3.10 Avaliac¸˜ao dos Algoritmos . . . 34

3.11 Considerac¸˜oes Finais . . . 35 4 Concretizac¸˜ao 37 4.1 Ferramentas Utilizadas . . . 37 4.2 Desenho . . . 38 4.2.1 Manager . . . 38 4.2.2 Enforcer . . . 40 4.2.3 Comunicac¸˜ao . . . 42 4.3 Execuc¸˜ao da Ferramenta . . . 42 4.3.1 DepSpace . . . 42 4.3.2 Manager . . . 43 4.3.3 Enforcer . . . 43

4.4 Integrac¸˜ao com o CIS . . . 45

4.5 Considerac¸˜oes Finais . . . 46 5 Sum´ario e Conclus˜oes 47 5.1 Trabalhos Relacionados . . . 48 5.2 Impress˜oes Pessoais . . . 48 5.3 Trabalho futuro . . . 49 Abreviaturas 51 Bibliografia 55 xii

(15)
(16)
(17)

Lista de Figuras

2.1 Exemplo de uma topologia de rede usando uma antepara tradicional . . . 9 2.2 Exemplo de uma topologia de rede usando uma antepara distribu´ıda . . . 10 2.3 Exemplo de uma regra de seguranc¸a, usando iptables . . . 11 2.4 Arquitectura do Servic¸o de Coordenac¸˜ao DEPSPACE. . . 13 2.5 Exemplo de uma pol´ıtica de controlo acesso definida no espac¸o de tuplos 13 2.6 Infra-estrutura Cr´ıtica que controla a rede de energia el´ectrica. . . 15 2.7 Arquitectura de uma IC com um fluxo de informac¸˜ao permitido. . . 17 3.1 Descric¸˜ao de interacc¸˜oes, desde a criac¸˜ao de pol´ıtica at´e `a sua distribuic¸˜ao. . . . 20 3.2 Actualizac¸˜ao de Pol´ıticas em um dom´ınio no SACP. . . 20 3.3 Actualizac¸˜ao de Pol´ıticas em v´arios dom´ınios no SACP. . . 21 3.4 Intervenientes do SACP e o modelo Biba. . . 24 3.5 Pol´ıtica de seguranc¸a do espac¸o de tuplos usada nos Algoritmos 1 e 2. . . 27 3.6 Pol´ıtica de seguranc¸a do espac¸o de tuplos usada nos Algoritmos 3 e 4. . . 31 4.1 Diagrama de classes do Manager. . . 39 4.2 Diagrama de classes do enforcer. . . 41 4.3 Exemplo de configurac¸˜ao da topologia de rede no ficheiro topology.config. . . . 42 4.4 Interface gr´afico do manager - Actualizac¸˜ao de Pol´ıticas em um dom´ınio. . . 43 4.5 Interface gr´afico do manager - Actualizac¸˜ao de Pol´ıticas em v´arios dom´ınios. . . 44 4.6 Interface gr´afico do enforcer. . . 44 4.7 Integrac¸˜ao do enforcer na Arquitectura CIS-PS. . . 45

(18)
(19)

Lista de Tabelas

2.1 Operac¸˜oes suportadas pelo DEPSPACE . . . 14 3.1 Tuplos usados no SACP. . . 23 3.2 N´umero de acessos realizados ao espac¸o de tuplos. A vari´avel n identifica

o n´umero de enforcers. . . 34

(20)
(21)

Cap´ıtulo 1

Introduc¸˜ao

Nos ´ultimos anos, os sistemas inform´aticos que controlam as infra-estruturas cr´ıticas (IC) (e.g., sistemas que controlam a energia el´ectrica, produc¸˜ao de g´as, telecomunicac¸˜oes, entre outros), est˜ao a migrar de sistemas propriet´arios e isolados para tecnologias ditas comuns, como as redes TCP/IP (muitas vezes ligadas directa ou indirectamente `a Inter-net) e sistemas operativos como o windows e linux. Estas mudanc¸as tˆem sempre como objectivo diminuir os custos, aumentar a eficiˆencia dos sistemas e melhorar a qualidade do servic¸o prestado. Por outro lado, esta modernizac¸˜ao pode afectar de maneira significativa a seguranc¸a inform´atica destes sistemas: se colocarmos as infra-estruturas cr´ıticas em re-des convencionais, usando software comum, elas automaticamente passam a ser alvo dos mesmos tipos de ataques efectuados a outros tipos de software.

Al´em disso, as ICs muitas vezes se expandem por v´arios dom´ınios administrativos e possuem muitos pontos de acesso, como por exemplo, VPNs, ligac¸˜oes sem fios, entre outros, tornando dif´ıcil a sua protecc¸˜ao utilizando mecanismos de seguranc¸a fornecidos por uma antepara tradicional. Desta forma, para responder `as necessidades actuais, ´e necess´ario descentralizar a antepara e implementar este tipo de mecanismo na sa´ıda de cada n´o ou rede cr´ıtica do sistema.

Para que esta infra-estrutura de protecc¸˜ao altamente distribu´ıda funcione, ´e necess´ario que haja algum tipo de gest˜ao coordenada que active/desactive os fluxos de informac¸˜ao na rede da IC, de forma similar `a distribuic¸˜ao de pol´ıticas feitas nas anteparas distribu´ıdas [1, 17].

Recentemente, no contexto do projecto europeu CRUTIAL, foram propostos uma s´erie de mecanismos para a protecc¸˜ao destas ICs [2, 11, 26]. Estes mecanismos aplicam pol´ıti-cas de controlo de acesso que tˆem em conta o estado da IC e que podem ser modificadas e actualizadas em tempo de operac¸˜ao do sistema. Entretanto, nenhum destes trabalhos se preocupa em como estas pol´ıticas s˜ao instaladas nas anteparas, ou como estas descobrem sobre mudanc¸as de estados (chamados contextos) no sistema. Este trabalho apresenta uma soluc¸˜ao para este problema fazendo uso de um servic¸o de coordenac¸˜ao seguro e fi´avel [3] que actua como meio de comunicac¸˜ao entre o n´o que envia as pol´ıticas e os

(22)

Cap´ıtulo 1. Introduc¸˜ao 2

n´os que as recebem. A soluc¸˜ao aqui proposta consiste em um conjunto de algoritmos para a actualizac¸˜ao de pol´ıticas em anteparas em um ou mais dom´ınios, garantindo uma semˆantica “tudo ou nada” (de forma similar `a propriedade de atomicidade das transacc¸˜oes [14]).

1.1

Motivac¸˜ao

A seguranc¸a das ICs ´e um assunto cada vez mais discutido actualmente. Estas infra-estruturas s˜ao muito importantes na sociedade porque controlam servic¸os b´asicos como a ´agua ou a energia. Qualquer falha neste tipo de infra-estruturas pode gerar consequˆencias catastr´oficas.

A protecc¸˜ao de ICs numa sociedade cada vez mais digital torna-se crucial para o constante fornecimento destes servic¸os b´asicos. ´E necess´ario proteger toda a rede da IC com dispositivos de protecc¸˜ao, ou seja, anteparas de seguranc¸a.

As ICs, muitas vezes, precisam autorizar certas acc¸˜oes de acordo com os diferen-tes estados da infra-estrutura. Por exemplo, o desligamento de equipamentos da rede el´ectrica s´o acontece, quando a rede entra em estado de emergˆencia, fazendo com que seja necess´ario actualizar as anteparas para aceitarem esses comandos.

Este projecto apresenta uma soluc¸˜ao para o problema de configurac¸˜ao de fluxos de informac¸˜ao nas anteparas da IC.

1.2

Objectivos

Este projecto tem como objectivo a concretizac¸˜ao de um sistema de gest˜ao de pol´ıticas de seguranc¸a para ICs, que permite manter a consistˆencia e seguranc¸a durante as suas operac¸˜oes. Al´em da concretizac¸˜ao, existe a necessidade tamb´em de integrar este sistema de gest˜ao com o componente principal da arquitectura CRUTIAL, o CIS (CRUTIAL Infor-mation Switch).

1.3

Metodologia Utilizada

Para realizar este trabalho, primeiro procedeu-se `a pesquisa de trabalhos, relacionado com o tema do projecto: desde modelo de pol´ıticas, anteparas distribu´ıdas e mecanismos de distribuic¸˜ao de pol´ıticas.

Depois de se fazer uma revis˜ao bibliogr´afica exaustiva e de se ter um maior conhe-cimento do problema, surgiu a necessidade de criar o modelo do sistema e algoritmos, desenhando a arquitectura e todo o seu funcionamento para obter um trabalho de melhor qualidade com o m´ınimo de desvio poss´ıvel.

(23)

Cap´ıtulo 1. Introduc¸˜ao 3

Depois de todas as tarefas de revis˜ao bibliogr´afica e de desenho, concretizou-se o prot´otipo, que veio aplicar toda a teoria anterior.

1.4

Organizac¸˜ao do documento

O pr´oximo cap´ıtulo descreve alguns conceitos importantes para a compreens˜ao do pro-jecto, tais como: os diferentes tipos de controlo de acesso, um modelo de controlo de acesso focado nas organizac¸˜oes, o OrBAC, passando pelos modelos de pol´ıticas mais im-portantes, os diferentes tipos de anteparas, o que ´e um espac¸o de tuplos e como este se aplica no projecto actual. Explica-se o que s˜ao ICs e que tipo de vulnerabilidades estas est˜ao sujeitas, actualmente.

O Cap´ıtulo 3 descreve o SACP (Sistema de Actualizac¸˜ao Coordenada de Pol´ıticas), apresentando todo o funcionamento deste sistema com a descric¸˜ao de algoritmos de actu-alizac¸˜ao coordenada de pol´ıticas.

A parte da concretizac¸˜ao, no Cap´ıtulo 4, descreve como o prot´otipo foi desenvolvido, aplicando a teoria dos cap´ıtulos anteriores.

A tese conclui com o Cap´ıtulo 5, que descreve de uma forma cr´ıtica todo o trabalho desenvolvido e apresenta o que pode ser melhorado no futuro.

(24)
(25)

Cap´ıtulo 2

Conceitos Fundamentais

Este cap´ıtulo descreve os conceitos fundamentais que s˜ao necess´arios para a compreens˜ao do problema descrito no cap´ıtulo anterior.

2.1

Controlos de Acesso

O controlo de acesso permite autorizar ou proibir o acesso de uma entidade (sujeito) a um determinado recurso. Existem v´arios tipos de controlo de acesso. Os modelos mais usados s˜ao os seguintes:

Controlo de acesso mandat´orio: O controlo de acesso mandat´orio (MACC) permite que o sistema restrinja a capacidade de um sujeito de aceder a um objecto, ou seja, o utilizador n˜ao pode mudar os direitos de acesso de um objecto mesmo que seja seu pro-priet´ario.

Controlo de acesso discricion´ario: O controlo de acesso discricion´ario (DACC) per-mite que o sujeito possa atribuir os direitos de acesso que quiser a outros sujeitos, apenas nos objectos que criou e controla.

Controlo de acesso baseado em pap´eis: No controlo de acesso baseado em pap´eis (RBAC), a pol´ıtica de seguranc¸a n˜ao concede permiss˜oes directamente aos utilizadores, mas sim aos pap´eis, que s˜ao posteriormente associados a utilizadores. Um determinado utilizador obt´em permiss˜oes se desempenhar um determinado papel.

2.1.1

OrBAC

O OrBAC (organization-based access control) [18], como o nome indica, ´e um modelo de controlo de acesso baseado em pap´eis com especial foco em organizac¸˜oes. Este mo-delo est´a assente sobre trˆes entidades b´asicas (sujeito, acc¸˜ao, objecto) e permite defi-nir permiss˜oes, seguindo a l´ogica de que o sujeito realiza uma determinada acc¸˜ao sobre

(26)

Cap´ıtulo 2. Conceitos Fundamentais 6

um qualquer objecto. A entidade mais importante neste modelo ´e a organizac¸˜ao. Uma organizac¸˜ao pode ser vista como um grupo organizado de sujeitos, a desempenhar um determinado papel.

Sujeitos e pap´eis Os sujeitos podem ser utilizadores, e.g., Jo˜ao ou Mariana. As or-ganizac¸˜oes podem ser por exemplo, o departamento financeiro da organizac¸˜ao. O pa-pel ´e usado na estrutura de uma ligac¸˜ao entre sujeitos e organizac¸˜oes. No dom´ınio da educac¸˜ao, os pap´eis “professor”, “aluno”, entre outros, v˜ao ser desempenhados por su-jeitos, assim como os pap´eis, “departamento de engenharia de software”, “secretaria”, “grupo de investigac¸˜ao LaSIGE” ou outros, v˜ao ser desempenhados por organizac¸˜oes.

Objectos e Vistas Uma vista corresponde a um conjunto de objectos que satisfazem uma propriedade comum. Por exemplo, numa aplicac¸˜ao web concebida para os profes-sores, a vista “registo de avaliac¸˜ao”, corresponde aos registos de avaliac¸˜ao dos alunos (objectos).

Acc¸˜oes e Actividades Uma actividade ´e um conjunto de acc¸˜oes que satisfazem uma propriedade comum. Neste modelo, uma actividade ´e por exemplo, “conduzindo”, “pes-quisando”, entre outros.

A entidade acc¸˜ao vai sobretudo conter acc¸˜oes como “ler”, “escrever”, “enviar”, entre outros. As actividades v˜ao unir-se a acc¸˜oes. Por exemplo, a actividade “lanc¸amento de notas” numa Universidade, corresponde a uma acc¸˜ao escrever que pode ser executada em um conjunto de dados numa base de dados relacional.

Contextos Os contextos [10] s˜ao usados para especificar circunstˆancias concretas onde as organizac¸˜oes mudam as suas pol´ıticas de seguranc¸a. Nas centrais de energia, a nova entidade contexto, vai cobrir circunstˆancias em que existem mudanc¸as de estado, por exemplo: “emergˆencia”, “normal” ou “restauro”. Os v´arios diferentes tipos de contextos s˜ao os seguintes:

• Temporal: Uma acc¸˜ao feita por um utilizador em um determinado objecto ´e auto-rizada apenas durante um intervalo de tempo. Por exemplo, autorizar determinados fluxos de informac¸˜ao a um t´ecnico de manutenc¸˜ao durante um tempo pr´e-determi-nado. Passado esse tempo estipulado, o contexto ´e alterado.

• Espacial: A localizac¸˜ao onde o utilizador faz o pedido ´e ´util para especificar a pol´ıtica de controlo de acesso. Por exemplo, numa central de energia, os empre-gados apenas podem aceder aos dados cr´ıticos de cada subestac¸˜ao quando estes se encontram em um terminal de manutenc¸˜ao.

(27)

Cap´ıtulo 2. Conceitos Fundamentais 7

O contexto espacial divide-se em dois tipos: f´ısico (i.e., a localizac¸˜ao f´ısica do utilizador, podendo ser o escrit´orio, um edif´ıcio ou mesmo o pa´ıs) e o l´ogico, ou seja, a localizac¸˜ao “l´ogica” onde o utilizador se encontra (i.e., o computador ou uma determinada rede).

• Declarado pelo utilizador: O utilizador define o contexto, ou seja, por exemplo, quando este determina que est´a a fazer algum tipo de manutenc¸˜ao a um dispositivo. A partir deste momento, o utilizador tem acesso a dados do dispositivo.

• Pr´e-requisito: A permiss˜ao ´e concedida a um sujeito apenas se algumas restric¸˜oes s˜ao satisfeitas. Por exemplo, quando um conjunto de t´ecnicos de manutenc¸˜ao acede a v´arios dispositivos, esta manutenc¸˜ao e todos os dados referentes `a mesma, ficam guardados numa base de dados, onde a verificac¸˜ao da restric¸˜ao ´e feita com um pedido `a mesma. Esta restric¸˜ao pode ser por exemplo, restringir o acesso aos dados de manutenc¸˜ao, mostrando apenas a cada t´ecnico os dados das suas manutenc¸˜oes. • Provis´orio: Uma obrigac¸˜ao provis´oria ´e uma obrigac¸˜ao que realiza alguma acc¸˜ao

que ´e aplicada quando um sujeito desempenha outra acc¸˜ao, geralmente num con-texto dado (tipicamente quando o concon-texto ´e declarado pelo utilizador). Por exem-plo, se o t´ecnico de manutenc¸˜ao em um contexto de emergˆencia finaliza o seu tra-balho, tem por obrigac¸˜ao enviar o relat´orio de manutenc¸˜ao para a administrac¸˜ao.

2.2

Modelos de Pol´ıticas

Depois de se descrever os tipos de controlo de acesso e um modelo focado nas organiza-c¸˜oes, ´e altura de definir o modelo de pol´ıticas e perceber qual a sua func¸˜ao no contexto deste trabalho.

Para definir as pol´ıticas de controlo de acesso e as regras de neg´ocio que v˜ao ser usadas na infra-estrutura da organizac¸˜ao, tem que se definir qual o modelo de pol´ıticas a aplicar. A escolha de um modelo de pol´ıticas ajuda na descric¸˜ao das pol´ıticas da organizac¸˜ao.

Existem v´arios modelos de pol´ıticas actualmente. De seguida s˜ao apresentados os modelos mais importantes.

2.2.1

Modelo Bell-LaPadula

O modelo Bell-LaPadula [6] previne o acesso (de leitura) n˜ao autorizado a informac¸˜ao, garantindo assim a confidencialidade da mesma.

Este modelo descreve um conjunto de regras em que se usam n´ıveis de seguranc¸a (“security labels”) para objectos e clearances para sujeitos. O conjunto de regras do modelo s˜ao:

(28)

Cap´ıtulo 2. Conceitos Fundamentais 8

• um sujeito em um determinado n´ıvel de seguranc¸a n˜ao pode ler um objecto que est´a num n´ıvel superior;

• um sujeito em um determinado n´ıvel de seguranc¸a n˜ao pode escrever em qualquer objecto de n´ıvel de seguranc¸a inferior;

2.2.2

Modelo Biba

O modelo Biba [6] descreve um conjunto de regras de controlo de acesso desenhadas para assegurar a integridade dos dados. Este modelo foi desenvolvido para colmatar a fraqueza do modelo Bell-LaPadula, descrito anteriormente.

Os dados e sujeitos est˜ao agrupados por n´ıveis de integridade, isto ´e, o modelo est´a desenhado de maneira que os sujeitos n˜ao corrompam os dados de n´ıvel superior.

No modelo Biba, os utilizadores podem apenas criar conte´udo, no mesmo ou abaixo do seu n´ıvel de integridade e podem apenas ler no mesmo n´ıvel de integridade ou acima.

Este modelo define um conjunto de propriedades similares ao modelo Bell-LaPadula, mas inversas:

• um sujeito em um determinado n´ıvel de seguranc¸a n˜ao pode ler um objecto que est´a num n´ıvel inferior (i.e., se o n´ıvel do objecto ´e dominado pelo n´ıvel do sujeito); • um sujeito em um determinado n´ıvel de seguranc¸a n˜ao pode escrever em qualquer

objecto de n´ıvel de seguranc¸a superior;

2.2.3

Modelo Clark-Wilson

O modelo de integridade Clark-Wilson, ´e baseado na noc¸˜ao de transacc¸˜ao (conjunto de operac¸˜oes que fazem o sistema transitar de um estado consistente para outro estado con-sistente).

Este modelo respeita o princ´ıpio de separac¸˜ao de responsabilidades onde requer que a entidade que certifica a transacc¸˜ao seja diferente daquela que a implementa.

O tipo de dados principal neste modelo, ´e o CDI (Constrained Data Item). O IVP (Integrity Verification Procedure) garante que todos os CDIs no sistema est˜ao v´alidos num determinado estado.

As transacc¸˜oes que reforc¸am a pol´ıtica de integridade s˜ao representados por TP (Trans-formation Procedures). Um TP tem como valores de entrada, um CDI ou um UDI (Un-constrained Data Item), produzindo depois um CDI.

Um TP deve fazer a transic¸˜ao de um sistema, de um estado v´alido para outro. Os UDIsrepresentam os valores de entrada do sistema (como aqueles dados pelo utilizador). Um TP deve garantir, atrav´es da certificac¸˜ao, que transporta todos os valores poss´ıveis do UDIem um CDI seguro [6].

(29)

Cap´ıtulo 2. Conceitos Fundamentais 9

2.3

Anteparas

A antepara [1, 17] ´e um dispositivo de protecc¸˜ao a n´ıvel de software ou hardware, que ´e configurado para filtrar o tr´afego de dados nas redes. Existem dois tipos de anteparas: a tradicionale a distribu´ıda.

2.3.1

Antepara Tradicional

A antepara tradicional tem como func¸˜ao evitar que intrusos acedam `a rede onde esta est´a instalada, filtrando todo o tr´afego baseando-se num conjunto de regras ou pol´ıticas definidas pelo pr´oprio utilizador, ou no caso de algumas organizac¸˜oes, pelo administrador de sistemas ou pela equipa de seguranc¸a.

A Figura 2.1 representa como a antepara tradicional est´a situada na topologia da rede, protegendo a rede de atacantes provenientes da WAN (Wide Area Network), ou seja, pro-tegendo a LAN (Local Area Network).

As ICs (ver Secc¸˜ao 2.5) tˆem v´arios dom´ınios administrativos e muitos pontos de acesso, como VPNs, ligac¸˜oes sem fios, entre outros, que facilmente ultrapassam os meca-nismos de seguranc¸a fornecidos por uma antepara tradicional, que apenas protege a rede de ataques externos (e.g., Internet) e n˜ao tem em conta os ataques internos, provenientes da pr´opria rede.

Existe uma maior necessidade em utilizar outro tipo de anteparas, que seja mais dis-tribu´ıda e menos centralizada (com menos dependˆencia na pr´opria topologia da rede), que resolva o problema da existˆencia de muitos pontos de acesso numa infra-estrutura t˜ao expandida como ´e o caso da IC.

LAN

WAN Protegido

(30)

Cap´ıtulo 2. Conceitos Fundamentais 10

2.3.2

Antepara Distribu´ıda

As anteparas distribu´ıdas [1, 16, 17, 25] surgiram para tentar resolver o problema de existir muitos pontos de acesso numa determinada infra-estrutura. Pontos esses que ultra-passavam os mecanismos de seguranc¸a fornecidos por uma antepara tradicional.

Este tipo de antepara descentraliza toda a gest˜ao de pol´ıticas de seguranc¸a e n˜ao est´a restringida `a pr´opria topologia da rede (como se pode observar pela Figura 2.2), ao contr´ario da antepara tradicional, que distingue quem est´a dentro da rede como sendo confi´avel, e fora, como n˜ao confi´avel. Esta pode ser instalada na entrada de cada n´o cr´ıtico da rede, protegendo-a de qualquer ataque, seja ele interno ou externo.

As anteparas filtram a informac¸˜ao na sua rede de acordo com as pol´ıticas de seguranc¸a definidas. Estas pol´ıticas s˜ao muito importantes, porque s˜ao elas que definem quais os fluxos de informac¸˜ao autorizados na rede.

LAN

WAN

Figura 2.2: Exemplo de uma topologia de rede usando uma antepara distribu´ıda

2.3.3

Pol´ıticas de Controlo de Acesso em Anteparas

As pol´ıticas de seguranc¸a definem que tipo de informac¸˜ao pode fluir na rede. Estas s˜ao condic¸˜oes que dividem um conjunto de estados no sistema em autorizados ou seguros, n˜ao autorizadosou n˜ao seguros.

A Figura 2.3 apresenta um exemplo de uma regra de seguranc¸a usando o iptables1, que

permite definir regras de controlo de fluxos de informac¸˜ao. Esta regra quando aplicada no sistema, aceita pacotes TCP do IP 192.168.1.100, que iniciem uma nova ligac¸˜ao para o porto 22. Uma pol´ıtica de controlo de acesso de iptables ´e uma lista destas regras.

(31)

Cap´ıtulo 2. Conceitos Fundamentais 11 /sbin/iptables -A INPUT -p tcp -s 192.168.1.100/32

–dport 22 -m state –state NEW -j ACCEPT

Figura 2.3: Exemplo de uma regra de seguranc¸a, usando iptables

A pol´ıtica de seguranc¸a apresentada ´e muito b´asica, porque apenas faz inspecc¸˜ao ao n´ıvel de pacotes. Existem application gateways que permitem filtrar a informac¸˜ao se-guindo pol´ıticas de seguranc¸a ao n´ıvel de aplicac¸˜ao [24]. Um exemplo de pol´ıticas ao n´ıvel da aplicac¸˜ao ´e o OrBAC (ver Secc¸˜ao 2.1.1), que permite definir regras de controlo de acesso com foco na pr´opria organizac¸˜ao, n˜ao havendo a necessidade de definir proto-colos, portos ou enderec¸os IP, tornando mais f´acil e menos prop´ıcio a erros a definic¸˜ao de pol´ıticas de seguranc¸a.

2.4

Espac¸o de Tuplos

Os sistemas distribu´ıdos abertos s˜ao uma pec¸a fundamental na sociedade de informac¸˜ao actual. Estes sistemas s˜ao constitu´ıdos por v´arios processos que se executam em anfitri˜oes heterog´eneos ligados a uma rede tamb´em heterog´enea, como a Internet. Muitas aplicac¸˜oes distribu´ıdas s˜ao constru´ıdas usando primitivas simples como os sockets TCP/IP e chama-das a procedimentos remotos. Existe uma grande necessidade de haver ferramentas mais eficazes que permitam a criac¸˜ao de aplicac¸˜oes complexas com um baixo time-for-market, ao mesmo tempo que garanta a tolerˆancia a desconex˜oes, recuperac¸˜ao de crashes no ser-vidor e seguranc¸a contra acc¸˜oes maliciosas.

O espac¸o de tuplos veio introduzir uma nova forma de comunicac¸˜ao entre sistemas distribu´ıdos, com o objectivo de resolver todos os problemas descritos anteriormente.

2.4.1

Definic¸˜ao

O espac¸o de tuplos foi originalmente introduzido na linguagem de programac¸˜ao LINDA [13]. Este guarda e recupera tuplos (sequˆencias finitas de valores). As operac¸˜oes suporta-das s˜ao essencialmente a de inserir, ler e remover tuplos.

Um tuplo t = hf1, f2, . . . , fni em que todos os campos tˆem um valor j´a definido tem

o nome de entrada. Um tuplo que tem um ou mais campos indefinidos ´e denominado de template(denotado com uma barra, e.g. t). Uma entrada t e um template t combinam, se tiverem o mesmo n´umero de campos e todos os valores desses campos s˜ao iguais. Por exemplo, o template ha, b, ∗i combina com qualquer tuplo que tenha trˆes campos e que estes tenham como primeiro e segundo campo, os valores a e b (o s´ımbolo ∗ significa que esse campo pode ser qualquer valor). Um tuplo t pode ser inserido no espac¸o de tuplos usando a operac¸˜ao out(t). A operac¸˜ao rd(t) ´e usada para ler e obter tuplos do espac¸o que combinem com o template t. Um tuplo pode ser lido e removido do espac¸o usando a

(32)

Cap´ıtulo 2. Conceitos Fundamentais 12

operac¸˜ao in(t). As operac¸˜oes in e rd s˜ao bloqueantes. As vers˜oes n˜ao bloqueantes, inp e rdp s˜ao muitas vezes fornecidas pelo espac¸o de tuplos.

O espac¸o de tuplos suporta um modelo de comunicac¸˜ao que ´e desacopolado no tempo (os processos podem n˜ao estar activos ao mesmo tempo) e no espac¸o (os processos n˜ao precisam de saber a identidade e localizac¸˜ao dos outros) [9], fornecendo algum tipo de sincronizac¸˜ao, ao mesmo tempo [23].

As grandes vantagens em usar o espac¸o de tuplos s˜ao a sua simplicidade, possuindo apenas quatro operac¸˜oes b´asicas (e outras variantes), ser content-addressable, ou seja, o facto de os tuplos serem acedidos atrav´es do seu conte´udo fornece uma grande flexibili-dade ao modelo e por ´ultimo, ter uma comunicac¸˜ao desacopolada.

2.4.2

DepSpace

O DEPSPACE [3] ´e um servic¸o de coordenac¸˜ao que usa o modelo da m´aquina de estados [22] para implementar a sua tolerˆancia a faltas Bizantinas e prover uma abstracc¸˜ao de um espac¸o de tuplos. Este espac¸o de tuplos ´e replicado em um conjunto de servidores. Esse conjunto forma um reposit´orio de tuplos, garantindo que o servic¸o seja confi´avel. Para o DEPSPACEser confi´avel tem que satisfazer os atributos de confiabilidade [20]. Os atribu-tos relevantes na definic¸˜ao de um sistema confi´avel s˜ao: integridade (nenhuma alterac¸˜ao impr´opria ao espac¸o de tuplos pode ocorrer), disponibilidade (o espac¸o de tuplos tem que estar dispon´ıvel para executar as operac¸˜oes pedidas) e confidencialidade (o conte´udo dos campos de cada tuplo n˜ao podem ser divulgados para intervenientes n˜ao autorizados). O servic¸o de coordenac¸˜ao fornecido pelo DEPSPACE ´e confi´avel enquanto menos de um

terc¸o das r´eplicas n˜ao falhem.

A Figura 2.4 descreve dois clientes a executar operac¸˜oes sobre as r´eplicas do servic¸o de coordenac¸˜ao DEPSPACE. Esta descreve que o Cliente 1 quando executa uma operac¸˜ao

sobre o servic¸o de coordenac¸˜ao, a mesma ´e executada sobre todas as r´eplicas, assim como a operac¸˜ao do Cliente 2. Outro ponto importante ´e que estas operac¸˜oes s˜ao executadas na mesma ordem em todas as r´eplicas correctas.

A Tabela 2.1 apresenta todas as operac¸˜oes suportadas pelo DEPSPACE.

2.4.3

Verificac¸˜ao de Pol´ıticas de Seguranc¸a

O controlo de acesso do DEPSPACEsegue o modelo de pol´ıticas Clark-Wilson (ver Secc¸˜ao

2.2.3). Este tipo de protecc¸˜ao de granularidade fina, tem em conta trˆes tipos de parˆametros para decidir se uma operac¸˜ao pode ou n˜ao ser em um espac¸o de tuplos:

• o identificador do processo p que invocou a operac¸˜ao; • a operac¸˜ao op e os seus argumentos;

(33)

Cap´ıtulo 2. Conceitos Fundamentais 13

DepSpace

Cliente 1 Cliente 2 out(<f1,f2,...fn>) inp(<f1,f2,...fn>) Replica 1 Replica 2 Replica 3 Replica 4

Figura 2.4: Arquitectura do Servic¸o de Coordenac¸˜ao DEPSPACE.

Cada espac¸o l´ogico definido no DEPSPACE tem uma ´unica pol´ıtica de acesso que deve ser definida durante a configurac¸˜ao do sistema, pelo criador do espac¸o. Quando uma operac¸˜ao ´e invocada pelo servidor, existe uma verificac¸˜ao se a operac¸˜ao satisfaz a pol´ıtica de acesso do espac¸o. Os servidores correctos verificam correctamente essa pol´ıtica, ao contr´ario dos servidores faltosos. A verificac¸˜ao ´e feita sobre uma condic¸˜ao l´ogica criada na regra da operac¸˜ao invocada.

Object State T S

Rrd: execute(read(hPERSON, id, name, agei)) : −

invoke(p, rd(hPERSON, id, name, agei)) ∧ p = id Rout : execute(p, out(hPERSON, id, name, agei) : −

invoke(p, write(out(hPERSON, id, name, agei))) ∧ p = id ∧ @id : hPERSON, id, ∗, ∗i

Figura 2.5: Exemplo de uma pol´ıtica de controlo acesso definida no espac¸o de tuplos A pol´ıtica de controlo de acesso ´e representada usando a sintaxe da linguagem de programac¸˜ao PROLOG, ou seja, o lado esquerdo da func¸˜ao (antes do s´ımbolo “:-”) ´e verdadeiro se e s´o se a condic¸˜ao do lado direito ´e verdadeira. A Figura 2.5 descreve uma

(34)

Cap´ıtulo 2. Conceitos Fundamentais 14

Operac¸˜ao Descric¸˜ao

out(t) insere o tuplo t no espac¸o

rdp(t) lˆe um tuplo que combina com t do espac¸o (retornando true); retorna false se n˜ao encontrar nenhum tuplo

inp(t) lˆe e elimina o tuplo que combina com t do espac¸o (retor-nando true); retorna f alse se n˜ao encontrar nenhum tuplo rd(t) lˆe um tuplo que combina com t do espac¸o; fica bloqueado

at´e que algum tuplo que combine com t seja encontrado in(t) lˆe e elimina o tuplo que combina com t do espac¸o; fica

blo-queado at´e que algum tuplo combine com t seja encontrado cas(t, t)

Se n˜ao existir um tuplo que combine com t no espac¸o, t ´e inserido e a operac¸˜ao retorna true; caso contr´ario retorna f alse

Tabela 2.1: Operac¸˜oes suportadas pelo DEPSPACE

pol´ıtica de controlo de acesso que restringe o acesso ao espac¸o de tuplos. A primeira regra permite a qualquer processo ler os seus pr´oprios dados (atrav´es da condic¸˜ao “p = id”). A segunda e ´ultima regra Rwrite permite a um processo com um determinado id, inserir

um tuplo PERSON se e s´o se esse mesmo tuplo n˜ao existir no espac¸o de tuplos (i.e., se n˜ao tiver o mesmo id). Uma descric¸˜ao mais pormenorizada sobre o funcionamento das pol´ıticas de controlo de acesso usadas no DEPSPACE, pode ser encontrada em [4].

2.5

Infra-estruturas cr´ıticas

Hoje em dia, a sociedade depende de servic¸os b´asicos como a ´agua, a electricidade, o g´as, entre outros. As ICs s˜ao infra-estruturas que controlam estes servic¸os b´asicos e n˜ao conseguem operar sem a ajuda de sistemas inform´aticos. Estes sistemas, compostos por muitos dispositivos, coleccionam milhares de medic¸˜oes sobre os processos em execuc¸˜ao e realizam acc¸˜oes atrav´es de actuadores (v´alvulas e bombas) e apresentam a informac¸˜ao integrada com alarmes para posterior visualizac¸˜ao por parte dos operadores (nos centros de controlo). Estes sistemas de computadores complexos s˜ao tipicamente chamados de SCADA(Supervisory Control and Data Aquisition).

A Figura 2.6 apresenta a hierarquia de uma IC, que produz, transforma e distribui energia. A energia ´e produzida por uma central el´ectrica. De seguida essa energia ´e en-viada para as subestac¸˜oes, que s˜ao controladas por centros de controlo regionais que as monitorizam. Este controlo hier´arquico transfere responsabilidades de quem se encontra no topo at´e `a base. Alguns detalhes na figura foram eliminados para uma melhor compre-ens˜ao do funcionamento da infra-estrutura.

(35)

Cap´ıtulo 2. Conceitos Fundamentais 15

CENTRAL ELÉCTRICA

produz energia

SUBESTAÇÃO

diminui voltagem

CENTRO DE CONTROLO REGIONAL

controla as subestações

S1 S2 S3 S4 S5 S6

Figura 2.6:Infra-estrutura Cr´ıtica que controla a rede de energia el´ectrica.

2.5.1

Ameac¸as e Vulnerabilidades em IC

Quando os protocolos para o SCADA foram desenvolvidos, o seu principal objectivo foi o de fornecer apenas as funcionalidades que garantissem o funcionamento do sistema, com um bom desempenho. A seguranc¸a nunca foi uma preocupac¸˜ao na construc¸˜ao destas redes de grande escala.

A ´unica ideia de “seguranc¸a” que havia, eram que estas redes SCADA estavam elec-tronicamente isoladas de todas as outras, havendo um pressuposto de que os atacantes n˜ao podiam aceder `as mesmas [7]. A isolac¸˜ao f´ısica n˜ao garante a seguranc¸a da rede, por-que existe sempre a possibilidade de haver uma ligac¸˜ao da rede local para a rede externa, atrav´es por exemplo, da linha de telefone ou da Internet. Essa ligac¸˜ao ´e muitas vezes necess´aria devido `a necessidade de interligac¸˜ao das organizac¸˜oes, por raz˜oes de eficiˆencia [15].

Um atacante determinado, pode explorar cada um destes pontos de acesso e obter o acesso a m´aquinas dentro da IC. A ameac¸a a estes sistemas ´e real, comprovado por v´arios incidentes actuais [8].

Existe um grande n´umero de redes e dispositivos cr´ıticos que necessitam de ser prote-gidos nas ICs, utilizando algum mecanismo de protecc¸˜ao.2

No desenvolvimento destes mecanismos de protecc¸˜ao (e.g., anteparas) ´e necess´ario ter em conta alguns aspectos:

(36)

Cap´ıtulo 2. Conceitos Fundamentais 16

• As ICs possuem muitos sistemas legados e componentes n˜ao computacionais: con-troladores, sensores, actuadores, entre outros, que n˜ao podem ser modificados por raz˜oes operacionais.

• A principal preocupac¸˜ao das organizac¸˜oes ´e que a IC tem que continuar a funcionar com o mesmo n´ıvel de servic¸o esperado com os novos mecanismos de seguranc¸a, fazendo com que estes n˜ao sejam implementados se complicarem o funcionamento das operac¸˜oes. Por exemplo diminu´ırem a produtividade com a criac¸˜ao de palavras--chave para executar determinada operac¸˜ao.

Estas duas condic¸˜oes sugerem algum cuidado na definic¸˜ao de mecanismos de segu-ranc¸a neste tipo de infra-estruturas. Para tentar enderec¸ar todos os aspectos descritos anteriormente no desenvolvimento de mecanismos de protecc¸˜ao de ICs, surgiu a arquitec-tura CRUTIAL.

2.5.2

Arquitectura CRUTIAL para actualizac¸˜ao de pol´ıticas

O CRUTIAL (CRitical UTility InfrastructurAL resilience) [2, 26], surgiu com o objec-tivo de criar uma nova arquitectura e protocolos de protecc¸˜ao para as ICs sem requerer alterac¸˜oes nos sistemas legados.

Esta ´e representada por uma WAN-of-LANs (ver Figura 2.7). Por exemplo, a rede de distribuic¸˜ao de energia ´e formada por subestac¸˜oes de transformac¸˜ao de energia ou escrit´orios, modelados como uma colecc¸˜ao de LANs, que est˜ao interligados por uma rede maior, a WAN (i.e., redes dedicadas ou a Internet).

Esta arquitectura permite a definic¸˜ao de dom´ınios de seguranc¸a (e.g., LANs) com di-ferentes n´ıveis de criticidade.

A ligac¸˜ao de todos os n´os da rede e de todos os dom´ınios ´e feita atrav´es de fluxos de informac¸˜ao que necessitam de ser configurados de alguma maneira, para proteger a rede. Por exemplo, na Figura 2.7, o fluxo de informac¸˜ao que vai desde o PLC3(Programmable Logic Controller) at´e ao servidor que guarda o hist´orico, necessita de passar pelas antepa-ras 1, 2 e 3, que devem filtrar este tr´afego atrav´es das suas pol´ıticas de controlo de acesso que necessitam de ser configuradas ou actualizadas de alguma forma.

A antepara que protege cada LAN ´e um dispositivo denominado CIS (Crutial Infor-mation Switch). Este componente ´e uma antepara distribu´ıda avanc¸ada (ver Secc¸˜ao 2.3.2) que fornece protecc¸˜ao e resiliˆencia a diferentes partes da IC.

O CIS fornece dois tipos de servic¸os: o servic¸o de protecc¸˜ao [2], que assegura que o tr´afego de entrada e de sa´ıda da LAN satisfaz a pol´ıtica de seguranc¸a da organizac¸˜ao, e o servic¸o de comunicac¸˜ao [11], que tem como principal objectivo suportar a comunicac¸˜ao segura entre CIS e tamb´em entre LANs.

3O PLC ´e usado para ler inputs anal´ogicos e digitais, aplicar um conjunto de declarac¸˜oes l´ogicas e gerar

(37)

Cap´ıtulo 2. Conceitos Fundamentais 17

1 2

3

Figura 2.7: Arquitectura de uma IC com um fluxo de informac¸˜ao permitido.

O modelo de controlo de acesso suportado pelo CIS, tem em considerac¸˜ao o envol-vimento de diferentes organizac¸˜oes, assim como o de possibilitar que as pol´ıticas sejam dinˆamicas, i.e., que mudem de acordo com o contexto [10] e estado [12] da IC. O cerne desta tese ´e a definic¸˜ao de algoritmos para a distribuic¸˜ao consistente destas pol´ıticas.

2.5.3

Actualizac¸˜ao coordenada de pol´ıticas

Nas ICs existem um grande n´umero de redes e dispositivos cr´ıticos que necessitam de ser protegidos, envolvendo mecanismos de protecc¸˜ao que precisam de ser configurados. O processo de configurac¸˜ao destes mecanismos ´e suscept´ıvel a erros porque ´e necess´ario configurar cada dispositivo da infra-estrutura, ou seja, cada antepara.

Al´em da configurac¸˜ao exaustiva de cada dispositivo de protecc¸˜ao, existe tamb´em o caso em que o controlo de acesso ´e dinˆamico, i.e., as pol´ıticas n˜ao s˜ao est´aticas e todas elas dependem do contexto (apresentado na Secc¸˜ao 2.1.1) influenciado pelos diferentes estados da IC (e.g., os estados de um sistema de gerac¸˜ao e distribuic¸˜ao de energia [12]).

Para trocar pol´ıticas de forma coordenada e segura, ´e necess´ario criar algum sistema que consiga distribuir e actualizar as pol´ıticas de seguranc¸a de uma forma coordenada e sincronizada, de maneira que j´a n˜ao seja necess´ario configurar cada antepara da infra-estrutura manualmente.

(38)

Cap´ıtulo 2. Conceitos Fundamentais 18

2.6

Considerac¸˜oes Finais

Neste cap´ıtulo descreveu-se alguns conceitos fundamentais, entre os quais, os v´arios tipos de controlo de acesso (mandat´orio, discricion´ario, baseado em pap´eis), passando pela descric¸˜ao de um modelo de controlo de acesso focado nas organizac¸˜oes, o OrBAC. Em seguida, foram apresentados alguns modelos de pol´ıticas mais conhecidos, descreveu-se tamb´em os v´arios tipos de anteparas (tradicional e distribu´ıda) e como as pol´ıticas de controlo de acesso em anteparas ao n´ıvel de pacotes, est˜ao ultrapassadas. De seguida, apresentou-se o espac¸o de tuplos e como este pode facilitar a implementac¸˜ao de sistemas distribu´ıdos. Um exemplo que usa uma abstracc¸˜ao de um espac¸o de tuplos ´e o DEPSPACE, um servic¸o de coordenac¸˜ao confi´avel que possui um controlo de acesso que restringe o acesso ao espac¸o. Descreveu-se as ICs e como estas s˜ao importantes na sociedade. As ICs s˜ao controladas por sistemas SCADA que est˜ao ligados `a Internet. O SCADA n˜ao se preocupa com a seguranc¸a da rede da IC, logo ´e necess´ario instalar algum tipo de dispositivo de protecc¸˜ao que fac¸a o filtro ao n´ıvel da aplicac¸˜ao, dos fluxos de informac¸˜ao da rede e que distribua as pol´ıticas de seguranc¸a, tendo em conta o estado do sistema.

O cap´ıtulo seguinte descreve uma poss´ıvel soluc¸˜ao para a resoluc¸˜ao do problema de actualizac¸˜ao de pol´ıticas coordenadas, apresentando algoritmos e descrevendo o seu funcionamento. Tamb´em s˜ao apresentadas as pol´ıticas de controlo de acesso usadas no espac¸o de tuplos.

(39)

Cap´ıtulo 3

Algoritmos de actualizac¸˜ao de pol´ıticas

coordenadas

O sistema de actualizac¸˜ao de pol´ıticas tem de ser capaz de distribuir as pol´ıticas de con-trolo de acesso de uma forma coordenada e sincronizada.

Para resolver os v´arios problemas de sincronizac¸˜ao de pol´ıticas, desenvolveu-se atrav´es desta dissertac¸˜ao uma soluc¸˜ao que permite resolver os problemas descritos no cap´ıtulo anterior, nomeadamente na protecc¸˜ao de ICs, ao n´ıvel de distribuic¸˜ao de pol´ıticas pelas anteparas.

3.1

Princ´ıpios de Funcionamento

A nossa soluc¸˜ao para a actualizac¸˜ao coordenada de pol´ıticas ´e constitu´ıda por um conjunto de intervenientes que funcionam com outros componentes, ou seja, antes da pol´ıtica ser enviada para o nosso SACP (Sistema de Actualizac¸˜ao Coordenada de Pol´ıticas), tem que ser criada e verificada, como est´a descrito na Figura 3.1.

Antes de tudo, ´e necess´ario definir a pol´ıtica de seguranc¸a que vai ser aplicada na IC. O administrador de sistemas (ou algum grupo especializado em seguranc¸a) cria a pol´ıtica de controlo de acesso. Como j´a foi definido anteriormente, o modelo OrBAC (descrito na Secc¸˜ao 2.1.1) permite descrever tais pol´ıticas, a um n´ıvel abstracto focado nas organizac¸˜oes, n˜ao havendo a preocupac¸˜ao de descrever portos ou protocolos.

De seguida, depois da pol´ıtica ter sido criada, ´e necess´ario verific´a-la, ou seja, se esta est´a correcta e n˜ao tem ambiguidades. Actualmente, ferramentas como o APT (Ac-cess Policy Tool)[21], conseguem com v´arios algoritmos sofisticados analisar pol´ıticas de seguranc¸a de grandes sistemas.

Por fim, depois de criada e analisada, a pol´ıtica ´e enviada para o SACP.

O SACP ´e constitu´ıdo por trˆes componentes: o manager, o enforcer e o servic¸o de coordenac¸˜ao. As duas primeiras entidades comp˜oem o sistema e comunicam directamente com a terceira.

(40)

Cap´ıtulo 3. Algoritmos de actualizac¸˜ao de pol´ıticas coordenadas 20 Verificador de Políticas SACP Administrador cria a política de segurança usando o OrBAC Manager política já verificada OrBAC Política Enforcer distribuição de políticas CIS1 CIS2 CIS3

Figura 3.1:Descric¸˜ao de interacc¸˜oes, desde a criac¸˜ao de pol´ıtica at´e `a sua distribuic¸˜ao.

<NEW_POLICY, id, ...> <POLICY, e2, ...> <POLICY, e1, ...> <DEPLOYED, e2, ...> Manager (DepSpace) Coordination Service Enforcer e1 Enforcer e2 Enforcer e3 CIS CIS CIS

(41)

Cap´ıtulo 3. Algoritmos de actualizac¸˜ao de pol´ıticas coordenadas 21

De um modo geral, o manager tem o papel de iniciar o processo de actualizac¸˜ao de pol´ıticas em um ou mais dom´ınios.

Na actualizac¸˜ao de pol´ıticas em um dom´ınio (ver Figura 3.2), o manager inicia o processo de actualizac¸˜ao enviando as pol´ıticas para o espac¸o de tuplos (i.e., para uma instˆancia do DEPSPACE). O enforcer que est´a a observar o espac¸o de tuplos, verifica que existe uma nova pol´ıtica e vai busc´a-la para depois aplic´a-la. Tanto o enforcer como o manager observam o espac¸o de tuplos e esperam pela resposta dos outros enforcers que ainda n˜ao actualizaram para a nova pol´ıtica. Depois de todos os enforcers actualizarem as suas pol´ıticas, o processo de actualizac¸˜ao ´e finalizado.

Na actualizac¸˜ao de pol´ıticas em v´arios dom´ınios (ver Figura 3.3), o manager ao iniciar este processo, envia as pol´ıticas para cada espac¸o de tuplos associado a cada dom´ınio. Os enforcersque observam o espac¸o de tuplos correspondente obtˆem as pol´ıticas e aplicam-nas. A partir deste momento, o enforcer observa o espac¸o e espera a resposta do manager, isto porque este tem que observar todos os espac¸os de tuplos e verificar se os enforcers aplicaram ou n˜ao a pol´ıtica, de maneira a poder finalizar o processo.

Manager

DepSpace

DepSpace

DepSpace

Manager envia as políticas para os enforcers através do serviço de coordenação, para vários domínios

Enforcer e1 Enforcer e2 Enforcer e3 Enforcer e4 Enforcer e5 Enforcer e6 Enforcer e7 Enforcer e8 Enforcer e9 CIS CIS CIS CIS CIS CIS CIS CIS CIS d1 d2 d3

(42)

Cap´ıtulo 3. Algoritmos de actualizac¸˜ao de pol´ıticas coordenadas 22

3.2

Protocolo de Comunicac¸˜ao

O manager e o enforcer trocam informac¸˜ao entre si quando actualizam as suas pol´ıticas atrav´es de um servic¸o de coordenac¸˜ao tolerante a faltas Bizantinas, o DEPSPACE (ver Secc¸˜ao 2.4.2), recorrendo `a utilizac¸˜ao de tuplos (sequˆencias finitas de valores). Estes tuplos definem o protocolo de comunicac¸˜ao entre o manager e os enforcers. Os v´arios tipos de tuplos definidos no protocolo s˜ao os seguintes:

• hNEW POLICY, id, f, ugroup, timeout, ts(new p), utype, toConsumei

• hCONTEXT, id, f, ugroup, timeout, ts(new p), utype, toConsumei

• hPOLICY, id, pi, new pi

• hDEPLOYED, id, h(new p), pii

• hCONTEXT DEPLOYED, id, status, f ailed, successi

Todos os tipos de tuplos e seus campos tˆem um papel muito importante no processo de distribuic¸˜ao de pol´ıticas, como est´a descrito na Tabela 3.1.

As pr´oximas secc¸˜oes descrevem os algoritmos distribu´ıdos usados na actualizac¸˜ao de pol´ıticas. Note que nestes algoritmos, o manager e os enforcers comunicam-se apenas atrav´es do servic¸o de coordenac¸˜ao que garante fiabilidade e seguranc¸a nas suas interacc¸˜oes.

3.3

Modelo de Sistema

Como foi descrito anteriormente, o sistema ´e constitu´ıdo por trˆes entidades: o manager, o enforcer e o servic¸o de coordenac¸˜ao. Estes intervenientes actuam sobre dom´ınios de seguranc¸a da IC. Um dom´ınio consiste basicamente em um conjunto de um ou mais en-forcerse uma instˆancia do DEPSPACE (ver Secc¸˜ao 2.4.2). Um manager pode actualizar

as pol´ıticas em um ou mais dom´ınios.

Em termos de hip´oteses temporais, o sistema assume que existe um timeout para a actualizac¸˜ao de pol´ıticas, i.e., define-se um valor para o tempo que o manager e enforcers esperam pela aplicac¸˜ao de pol´ıticas pelas anteparas (os enforcers) que as aplicam. Ultra-passado este per´ıodo de timeout, o sistema regressa ao estado anterior, ou seja, ao estado antes do in´ıcio do processo de actualizac¸˜ao.

A actualizac¸˜ao de pol´ıticas de seguranc¸a em um ou mais dom´ınios tem uma semˆantica “tudo ou nada”, similar `a propriedade de atomicidade das transacc¸˜oes [14], o que quer dizer que ou as pol´ıticas s˜ao aplicadas em todos os enforcers ou o sistema volta ao estado anterior.

Se um enforcer confirmar que recebeu a nova pol´ıtica (atrav´es da inserc¸˜ao do tuplo DEPLOYED no espac¸o de tuplos) e se o mesmo falhar a seguir `a inserc¸˜ao, o sistema s´o descobre essa falha na pr´oxima actualizac¸˜ao de pol´ıticas.

(43)

Cap´ıtulo 3. Algoritmos de actualizac¸˜ao de pol´ıticas coordenadas 23

campo comum id identificador ´unico de cada actualizac¸˜ao.

NEW POLICY

anuncia que existem novas pol´ıticas no espac¸o de tuplos.

CONTEXT

f n´umero m´aximo de falhas nos enforcers que o sistema de distribuic¸˜ao de pol´ıticas tolera.

ugroup conjunto de enforcers onde vai ser aplicada a nova pol´ıtica de seguranc¸a.

timeout tempo m´aximo que o manager e enforcers esperam que todos actualizem a nova pol´ıtica.

ts(new p)

data de quando foi efectuado o an´uncio da nova pol´ıtica. Tem como principal func¸˜ao facilitar a procura do ´ultimo id ´unico do tuplo existente no espac¸o de tuplos.

utype indica o tipo de actualizac¸˜ao, ou seja, parˆametro usado para decidir que pol´ıtica ´e aplicada enquanto os enforcers est˜ao a actualizar a sua pol´ıtica.

toConsume define se as pol´ıticas que est˜ao no espac¸o s˜ao para consu-mir ou n˜ao, isto ´e, se o enforcer lˆe e retira a pol´ıtica ou se existe apenas uma pol´ıtica para todos lerem.

POLICY

tuplo que cont´em a pol´ıtica de seguranc¸a que o conjunto de enforcers v˜ao aplicar.

pi id do enforcer a aplicar na pol´ıtica.

new p pol´ıtica de controlo de acesso a aplicar. DEPLOYED

tuplo usado para identificar que o enforcer aplicou a pol´ıtica com su-cesso.

h(new p) hash da pol´ıtica tem a func¸˜ao de garantir que o enforcer recebeu e aplicou a pol´ıtica correcta.

pi id ´unico do enforcer que inseriu o tuplo DEPLOYED.

CONTEXT DEPLOYED

tuplo usado para enviar a informac¸˜ao aos enforcers do su-cesso/insucesso da aplicac¸˜ao do contexto.

status indica o sucesso/insucesso da operac¸˜ao. failed conjunto de n´os que n˜ao aplicaram a pol´ıtica. success conjunto de n´os que aplicaram a pol´ıtica.

Tabela 3.1: Tuplos usados no SACP.

A comunicac¸˜ao entre enforcers e managers ´e autenticada com o DEPSPACE, ou seja,

se estes n˜ao forem autenticados, n˜ao podem participar no processo de actualizac¸˜ao de pol´ıticas devido `a sua incapacidade de trocar informac¸˜ao com o servic¸o de coordenac¸˜ao. Modelo de Pol´ıticas

O modelo de pol´ıticas usado no SACP ´e similar ao modelo Biba (apresentado na Secc¸˜ao 2.2.2), preservando a integridade dos dados (neste caso, as pol´ıticas de seguranc¸a). Os dados e sujeitos est˜ao agrupados em diferentes n´ıveis de integridade.

Os sujeitos s˜ao o manager e o enforcer, como est´a representado na Figura 3.4. O manager “escreve” no enforcer, atrav´es do envio de pol´ıticas de seguranc¸a que este tem que aplicar. O enforcer “lˆe” a informac¸˜ao do manager, isto ´e, por exemplo quando este envia tuplos de controlo para finalizar o processo de distribuic¸˜ao de pol´ıticas em v´arios dom´ınios.

Este modelo ´e reforc¸ado pelo controlo de acesso do espac¸o de tuplos (ver Secc¸˜ao 2.4.3), concretizado no DEPSPACE.

(44)

Cap´ıtulo 3. Algoritmos de actualizac¸˜ao de pol´ıticas coordenadas 24

Enforcer Manager

Leitura Escrita

Figura 3.4:Intervenientes do SACP e o modelo Biba.

3.4

Actualizac¸˜ao de Anteparas em um Dom´ınio

O algoritmo 1 descreve o comportamento do manager m quando o mesmo quer iniciar o processo de actualizac¸˜ao de pol´ıticas em um dom´ınio. Este processo depois de iniciado, distribui as pol´ıticas para os enforcers que de seguida aplicam as mesmas.

O m´etodo policyUpdate() do algoritmo, recebe cinco parˆametros: ugroup (grupo de enforcersque ter˜ao as suas pol´ıticas actualizadas), f (n´umero m´aximo de falhas de enfor-cersque podem ocorrer durante a actualizac¸˜ao), timeout (tempo m´aximo que o manager e os enforcers esperam pela aplicac¸˜ao das pol´ıticas em todos os n´os do grupo de enfor-cers), new p (define um vector com n pol´ıticas a enviar para os enforcers) e por ´ultimo o parˆametro utype (tipo de actualizac¸˜ao, i.e., qual deve ser o comportamento do enforcer durante a actualizac¸˜ao). O funcionamento do tipo de actualizac¸˜ao est´a descrito mais `a frente, na Secc¸˜ao 3.7). Os parˆametros desta func¸˜ao s˜ao usados na definic¸˜ao de alguns tuplos (ver Tabela 3.1).

Os algoritmos seguintes usam algumas func¸˜oes externas: nextId(), getTime() e h(). A func¸˜ao nextId() retorna um novo id, que representa o identificador ´unico de cada processo de actualizac¸˜ao de pol´ıticas. A func¸˜ao getTime() retorna o instante de tempo UTC (Coor-dinated Universal Time), enquanto que a func¸˜ao h() recebe como parˆametro um objecto e retorna a sua assinatura (usando o algoritmo MD51)

(45)

Cap´ıtulo 3. Algoritmos de actualizac¸˜ao de pol´ıticas coordenadas 25

Algoritmo 1 Manager - Actualizac¸˜ao de Anteparas em um dom´ınio Shared variables:

1: ts ← ∅ {espac¸o de tuplos partilhado}

procedure policy update(ugroup, f, timeout, new p, utype)

1: id ← nextId()

2: for all pj ∈ ugroup do

3: ts.out(hPOLICY, id, pj, new p[j]i)

4: end for

5: ts.out(hNEW POLICY, id, f, ugroup, timeout, getT ime(), utypei)

6: expired ← f alse

7: notDeployed ← ugroup {enforcers que ainda n˜ao aplicaram a pol´ıtica}

8: while | notDeployed |> f ∧ ¬expired do

9: if ts.rd(hDEPLOYED, id, h(new p), ?pi, timeout) then 10: notDeployed ← notDeployed \ {p}

11: else

12: expired ← true 13: end if

14: end while

O algoritmo 1 ´e constitu´ıdo pelos seguintes passos:

1. m insere |ugroup| tuplos POLICY no espac¸o de tuplos associado ao dom´ınio, um para cada enforcer a ser actualizado (linhas 2 a 4);

2. m insere um tuplo NEW POLICY no espac¸o de tuplos associado ao dom´ınio para anunciar que existe uma nova actualizac¸˜ao de pol´ıtica que deve ser aplicada por um grupo de enforcers (linha 5);

3. m continua a ler tuplos DEPLOYED no espac¸o de tuplos associado ao dom´ınio at´e que que todos (menos poss´ıveis faltas toleradas) os enforcers definidos em ugroup estejam actualizados e apliquem as suas novas pol´ıticas (linhas 8 a 14);

O algoritmo 2 descreve o comportamento do enforcer pi quando ao observar o espac¸o

(46)

Cap´ıtulo 3. Algoritmos de actualizac¸˜ao de pol´ıticas coordenadas 26

Algoritmo 2 Enforcer pi - Actualizac¸˜ao de anteparas em um dom´ınio

Shared variables:

1: ts ← ∅ {espac¸o de tuplos partilhado}

procedure policy update()

1: id ← nextId()

2: if ts.rd(hNEW POLICY, id, ?f, ?ugroup, ?timeout, ?ts, ?utype)i) then

3: if pi ∈ ugroup then/

4: return

5: end if

6: ts.rd(hPOLICY, id, pi, ?new pi)

7: applyP olicy(new p, utype)

8: ts.out(hDEPLOYED, id, h(new p), pii)

9: expired ← f alse

10: notDeployed ← ugroup {enforcers que ainda n˜ao aplicaram a pol´ıtica}

11: while | notDeployed |> f ∧ ¬expired do

12: if ts.rd(hDEPLOYED, id, h(new p), ?pi, timeout) then 13: notDeployed ← notDeployed \ {p} 14: else 15: expired ← true 16: end if 17: end while 18: if ¬expired then 19: applyP olicy(new p, N EW ) 20: else

21: applyP olicy(φ, ROLLBACK) 22: end if

23: end if

O algoritmo 2 ´e constitu´ıdo pelos seguintes passos:

1. pilˆe um tuplo NEW POLICY do espac¸o de tuplos associado ao dom´ınio (linha 2).

Se piest´a em ugroup, o algoritmo ´e executado, sen˜ao retorna (linhas 3 a 5);

2. pilˆe o tuplo POLICY do espac¸o de tuplos associado ao dom´ınio que cont´em a nova

pol´ıtica a ser aplicada (linha 6);

3. pi aplica a pol´ıtica de seguranc¸a de acordo com o tipo de actualizac¸˜ao (ver Secc¸˜ao

3.7), usando a func¸˜ao applyPolicy() (linha 7);

4. pi insere um tuplo DEPLOYED que representa o sucesso ao obter a nova pol´ıtica

(linha 8);

5. pi espera que todos os membros do ugroup (menos poss´ıveis faltas toleradas)

in-siram tuplos DEPLOYED no espac¸o de tuplos associado ao dom´ınio (linhas 11 a 17);

(47)

Cap´ıtulo 3. Algoritmos de actualizac¸˜ao de pol´ıticas coordenadas 27

6. o algoritmo ´e finalizado com a aplicac¸˜ao da pol´ıtica, atrav´es da execuc¸˜ao do m´etodo applyPolicy(). O tipo de actualizac¸˜ao que recebe como parˆametro est´a definido como NEW, ou seja, a partir desse momento, o enforcer aceita apenas pacotes que respeitem a nova pol´ıtica recebida (ver Secc¸˜ao 3.7 para mais detalhes). Se ocorrer um timeout, pi faz um ROLLBACK e aplica a pol´ıtica antiga, ou seja, a que estava

em aplicac¸˜ao antes do in´ıcio do processo de actualizac¸˜ao (linhas 18 a 22);

Object State T S

Rrd: execute(rd(t)) : − invoke(p, rd(t))

Rpolicy: execute(out(hPOLICY, id, e, new pi)) : −

invoke(m, out(hPOLICY, id, e, new pi)) ∧ @id, e : hPOLICY, id, e, ∗i ∈ T S ∧ manager(m)

Rnew policy : execute(out(hNEW POLICY, id, f, ugroup, timeout, ts, utypei)) : −

invoke(m, out(hNEW POLICY, id, f, ugroup, timeout, ts, utypei)) ∧ @id : hNEW POLICY, id, ∗, ∗, ∗, ∗, ∗i ∈ T S

∀j ∈ ugroup : hPOLICY, id, j, ∗i ∈ T S ∧ manager(m)

Rdeployed: execute(out(hDEPLOYED, id, h, ei) : −

invoke(p, out(hDEPLOYED, id, h, ei)) ∧

∃id : hPOLICY, id, e, new pi ∈ T S ∧ enf orcer(e) ∧ p = e ∧ h = h(new p))

Figura 3.5: Pol´ıtica de seguranc¸a do espac¸o de tuplos usada nos Algoritmos 1 e 2. A Figura 3.5 apresenta a pol´ıtica de controlo de acesso (ver Secc¸˜ao 2.4.3) do espac¸o de tuplos usada pelos dois algoritmos (1 e 2).

A regra Rrdpermite a qualquer processo ler qualquer tuplo do espac¸o. A regra Rpolicy

permite a um processo inserir tuplos POLICY (i.e., tuplo que cont´em a pol´ıtica a ser aplicada pelos enforcers) com o id da actualizac¸˜ao e do enforcer diferente daquele que est´a no espac¸o de tuplos. A regra Rnew policy permite a um processo inserir o tuplo

NEW POLICY (i.e., tuplo que anuncia a existˆencia de uma nova pol´ıtica) se n˜ao houver outro do mesmo tipo com o mesmo id de actualizac¸˜ao, e que todos os tuplos POLICY com o mesmo identificador da actualizac¸˜ao definidos no ugroup estejam no espac¸o. A regra Rdeployedpermite a um processo inserir um tuplo DEPLOYED (i.e., tuplo que

iden-tifica o enforcer que recebeu a pol´ıtica com sucesso) se houver outro tuplo POLICY no espac¸o de tuplos que tenha o mesmo id da actualizac¸˜ao, o mesmo identificador do enfor-cer e a assinatura da pol´ıtica seja igual `a assinatura definida no tuplo DEPLOYED. O tuplo DEPLOYED s´o pode ser inserido no espac¸o com o id do processo que executou Rdeployed.

As regras Rpolicy e Rnew policy definem as restric¸˜oes de operac¸˜oes que s˜ao executadas

(48)

Cap´ıtulo 3. Algoritmos de actualizac¸˜ao de pol´ıticas coordenadas 28

3.5

Actualizac¸˜ao de Anteparas em V´arios Dom´ınios

Quando se quer fazer uma mudanc¸a de pol´ıticas global envolvendo v´arios dom´ınios de seguranc¸a, ´e utilizado o algoritmo de actualizac¸˜ao de anteparas em v´arios dom´ınios.

O algoritmo 3 descreve o comportamento do manager m quando este inicia o processo de actualizac¸˜ao de pol´ıticas em v´arios dom´ınios, ou seja, a actualizac¸˜ao de um conjunto de enforcers que se encontram em v´arios espac¸os l´ogicos. O manager tem acesso a todos os espac¸os de tuplos nos v´arios dom´ınios. Para cada dom´ınio, existe um conjunto de vari´aveis privadas: o status define se houve sucesso ou insucesso na aplicac¸˜ao da nova pol´ıtica num determinada espac¸o, o ugroup ´e o conjunto de enforcers de cada dom´ınio que vai ser actualizado com novas pol´ıticas e por ´ultimo, a vari´avel notDeployed define quais os enforcers de cada dom´ınio que n˜ao aplicaram a pol´ıtica de seguranc¸a.

A func¸˜ao policy update context() recebe quatro parˆametros: f (define o n´umero m´axi-mo de falhas de enforcers que pode ocorrer durante o processo de actualizac¸˜ao de pol´ıti-cas), new p (matriz com as novas pol´ıticas que ser˜ao enviadas para todos os enforcers, de todos os dom´ınios), timeout (tempo m´aximo que os enforcers esperam pelo manager pela finalizac¸˜ao do processo de actualizac¸˜ao) e por ´ultimo, o utype (tipo de actualizac¸˜ao que define que pol´ıticas devem ser aceites enquanto o processo de actualizac¸˜ao ainda n˜ao foi finalizado, descrito na Secc¸˜ao 3.7).

O algoritmo 3 utiliza as mesmas func¸˜oes externas que os algoritmos anteriores e ´e constitu´ıdo pelos seguintes passos:

1. m insere um tuplo POLICY (para cada enforcer em cada dom´ınio administrativo). Estes tuplos ser˜ao depois consumidos pelos enforcers. (linhas 2 a 5);

2. m insere um tuplo CONTEXT em todos os espac¸os de tuplos associados aos dom´ınios para anunciar que existe um novo contexto. Este novo contexto (ver Secc¸˜ao 2.1.1) ir´a actualizar as pol´ıticas destes espac¸os de tuplos (linha 6);

3. m continua a ler tuplos DEPLOYED em todos os espac¸os de tuplos associados aos dom´ınios, at´e que todos os enforcers (menos poss´ıveis faltosos) apliquem as suas novas pol´ıticas. Esta parte ´e executada em paralelo, atrav´es de v´arias threads, uma para cada dom´ınio, no entanto, optou-se por descrevˆe-la de forma sequencial para manter a simplicidade (linhas 8 a 23);

4. Depois de todos os enforcers actualizarem as suas pol´ıticas, ´e altura de verificar se o contexto foi aplicado com sucesso ou n˜ao, em cada espac¸o (linha 24);

5. m insere um tuplo CONTEXT DEPLOYED em todos os espac¸os de tuplos asso-ciados aos dom´ınios, indicando o sucesso/insucesso na realizac¸˜ao da actualizac¸˜ao (linhas 25 a 27);

(49)

Cap´ıtulo 3. Algoritmos de actualizac¸˜ao de pol´ıticas coordenadas 29

Algoritmo 3 Manager - Actualizac¸˜ao de Anteparas em v´arios dom´ınios Shared variables:

1: ts1, · · · , tsn← ∅ {espac¸o de tuplos partilhado}

Private variables:

1: statusj ← ∅ {para cada dom´ınio 1 . . . n}

2: ugroupj ← ∅ {para cada dom´ınio 1 . . . n}

3: notDeployedj ← ∅ {para cada dom´ınio 1 . . . n}

procedure policy update context(f, new p, timeout, utype)

1: id ← nextId()

2: for all 1 ≤ j ≤ n do 3: for all pk∈ ugroupj do

4: tsj.out(hPOLICY, id, pk, new p[j][k]i)

5: end for

6: tsj.out(hCONTEXT, id, f, ugroupj, timeout, getT ime(), utypei)

7: end for

8: for all 1 ≤ j ≤ n do 9: expired ← f alse

10: notDeployed ← ugroupj {enforcers que ainda n˜ao aplicaram a pol´ıtica}

11: while | notDeployed |> f ∧ ¬expired do 12: for all pk ∈ ugroupj do

13: if tsj.rd(hDEPLOYED, id, h(new p), ?pji), timeout) then

14: notDeployed ← notDeployed \ {p} 15: else 16: expired ← f alse 17: end if 18: end for 19: end while 20: if ¬expired then 21: status ← true 22: end if 23: end for

24: status = statusj∧ · · · ∧ statusn

25: for all 1 ≤ j ≤ n do

26: tsj.out(hCONTEXT DEPLOYED, id, status, notDeployedj, ugroupj \

{notDeployedj}i)

27: end for

(50)

Cap´ıtulo 3. Algoritmos de actualizac¸˜ao de pol´ıticas coordenadas 30

O algoritmo 4 descreve o comportamento do enforcer pi quando o mesmo transita

para o estado de actualizac¸˜ao de pol´ıticas em v´arios dom´ınios, i.e., quando o manager cria um novo contexto no espac¸o l´ogico onde pi est´a inserido.

Algoritmo 4 Enforcer pi - Actualizac¸˜ao de Anteparas em v´arios dom´ınios

Shared variables:

1: ts ← ∅ {espac¸o de tuplos partilhado}

procedure policy update()

1: id ← nextId()

2: if ts.rd(hCONTEXT, id, ?f, ?ugroup, ?timeout, ?ts, ?utypei then

3: if pi ∈ ugroup then/

4: return

5: end if

6: if ts.rd(hPOLICY, id, pi, ?new pi) then

7: applyP olicy(new p, utype)

8: ts.out(hDEPLOYED, id, h(new p), pii)

9: expired ← f alse

10: if ts.rd(hCONTEXT DEPLOYED, id, ?status, ?f ailed, ?successi, timeout) then

11: if status = true ∧ ¬expired then

12: applyP olicy(new p, N EW ) 13: else

14: applyP olicy(φ, ROLLBACK)

15: end if 16: end if

17: end if

18: end if

O algoritmo ´e constitu´ıdo pelos seguintes passos:

1. Se pi lˆe um tuplo CONTEXT, o processo de mudanc¸a de contexto ´e iniciado e o

algoritmo ´e executado (linha 2). Se pi ´e um membro desse grupo, o algoritmo ´e

executado, sen˜ao retorna (linhas 3 a 5);

2. pi lˆe o tuplo POLICY do espac¸o de tuplos associado ao dom´ınio, que cont´em a

pol´ıtica a ser aplicada (linha 6);

3. pi aplica a pol´ıtica de seguranc¸a (de acordo com o tipo de actualizac¸˜ao que se

en-contra descrito na Secc¸˜ao 3.7), atrav´es da func¸˜ao applyPolicy() (linha 7);

4. pi insere um tuplo DEPLOYED, representando o sucesso de obter a nova pol´ıtica

(linha 8);

5. pi espera pela resposta do manager, indicando o sucesso/insucesso no processo de

Referências

Documentos relacionados

Por último, temos o vídeo que está sendo exibido dentro do celular, que é segurado e comentado por alguém, e compartilhado e comentado no perfil de BolsoWoman no Twitter. No

O artigo 2, intitulado “Tecnologias de Informação e Comunicação (TIC): Estar fora da família, estando dentro de casa”, foi resultado da realização de uma pesquisa de

•   O  material  a  seguir  consiste  de  adaptações  e  extensões  dos  originais  gentilmente  cedidos  pelo 

Considera-se que a interdisciplinaridade contribui para uma visão mais ampla do fenômeno a ser pesquisado. Esse diálogo entre diferentes áreas do conhecimento sobre

No código abaixo, foi atribuída a string “power” à variável do tipo string my_probe, que será usada como sonda para busca na string atribuída à variável my_string.. O

Para analisar as Componentes de Gestão foram utilizadas questões referentes à forma como o visitante considera as condições da ilha no momento da realização do

Neste estudo foram estipulados os seguintes objec- tivos: (a) identifi car as dimensões do desenvolvimento vocacional (convicção vocacional, cooperação vocacio- nal,

Os principais objectivos definidos foram a observação e realização dos procedimentos nas diferentes vertentes de atividade do cirurgião, aplicação correta da terminologia cirúrgica,