Esta sec¸˜ao apresenta uma definic¸˜ao para espac¸o de tuplas com seguranc¸a de funcionamento e a seguir discute os mecanismos necess´arios para implementar este tipo de objeto.
3.4.1 Atributos de Seguranc¸a de Funcionamento
Um espac¸o de tuplas ´e dito com seguranc¸a de funcionamento se ele satisfaz os atributos de seguranc¸a de funcionamento [10]. Como muitos outros sistemas, alguns destes atributos n˜ao s˜ao aplic´aveis ou s˜ao ortogonais ao projeto do espac¸o de tuplas (por exemplo, safety e capacidade de manutenc¸˜ao – manutenability). Os atributos relevantes neste caso s˜ao:
• Confiabilidade: as operac¸˜oes realizadas no espac¸o de tuplas fazem com que seu estado se modifique de acordo com sua especificac¸˜ao (tabelas 3.2 e 3.3);
• Disponibilidade: o espac¸o de tuplas sempre est´a pronto a executar as operac¸˜oes requisitadas por partes autorizadas;
• Integridade: nenhuma alterac¸˜ao impr´opria no estado de um espac¸o de tuplas pode ocorrer, i.e. o estado de um espac¸o de tuplas s´o pode ser alterado atrav´es da correta execuc¸˜ao de suas operac¸˜oes;
• Confidencialidade: o conte´udo dos campos de uma tupla n˜ao podem ser revelados a partes n˜ao autorizadas.
A dificuldade em garantir estes atributos adv´em da ocorrˆencia de faltas, de natureza acidental (um bug no software ou uma parada no servidor) ou maliciosa (um invasor que modifica uma tupla no servidor). O objetivo ´e evitar que estas faltas causem uma falha no espac¸o de tuplas, i.e. que um ou mais destes atributos sejam violados. Faltas maliciosas s˜ao particularmente dif´ıceis de serem tratadas j´a que n˜ao ´e poss´ıvel definir premissas a respeito do que um invasor pode ou n˜ao fazer em sistema [126]. Estas faltas s˜ao usualmente modeladas como a classe mais gen´erica de faltas – faltas arbitr´arias ou bizantinas – de tal forma que a soluc¸˜ao proposta neste cap´ıtulo ´e gen´erica em termos do tipo de falta tolerada.
O significado dos atributos de confiabilidade e disponibilidade s˜ao claros e podem ser facilmente entendidos, entretanto integridade e confidencialidade requerem alguma discuss˜ao. Uma alterac¸˜ao no espac¸o de tuplas ´e dita apropriada (vs. inapropriada) se e somente se (i.) ela ´e o resultado de uma das operac¸˜oes out, in, inp ou cas; e (ii.) se a operac¸˜ao satisfaz a pol´ıtica de acesso do espac¸o de tuplas. Uma pol´ıtica de acesso b´asica define quais operac¸˜oes no espac¸o de tuplas cada processo
tem direito de executar. A maneira mais simples e efetiva de prover este tipo de pol´ıtica ´e definindo quem pode inserir uma tupla no espac¸o e, para cada tupla inserida, quem pode lˆe-la e quem pode removˆe-la. O uso deste tipo de pol´ıtica em espac¸os de tuplas ´e apresentado na sec¸˜ao 3.5.3. Uma pol´ıtica mais elaborada seria usada para garantir ou negar a execuc¸˜ao de operac¸˜oes no espac¸o de tuplas levando em considerac¸˜ao trˆes parˆametros: a identidade do processo que invoca a operac¸˜ao, a operac¸˜ao a ser executada e seus argumentos, e as tuplas presentes no espac¸o. Um exemplo de pol´ıtica de acesso desse tipo definida informalmente pode ser: permita a execuc¸˜ao apenas de (i.) qualquer operac¸˜ao rd/rdp e (ii.) qualquer operac¸˜ao out invocada pelos clientes p1 ou p2 em que o primeiro
campo da tupla sendo inserida seja um inteiro positivo. Chamamos estas pol´ıticas de granularidade fina porque elas permitem o uso de uma variedade consider´avel de parˆametros [18, 95]. Este tipo de pol´ıtica ´e apresentado na sec¸˜ao 3.5.4 e exaustivamente discutido no cap´ıtulo 6. Pol´ıticas de acesso s˜ao importantes porque previnem clientes n˜ao autorizados de ler e remover tuplas do espac¸o bem como clientes maliciosos de “inundar” o espac¸o com uma grande quantidade de tuplas visando causar uma negac¸˜ao de servic¸o [26].
Esta discuss˜ao sobre controle de acesso tamb´em nos ajuda a clarificar o significado do atributo de confidencialidade. A id´eia geral ´e que o conte´udo de uma tupla n˜ao pode ser revelado a n˜ao ser por uma operac¸˜ao que satisfac¸a a pol´ıtica de acesso do espac¸o de tuplas. Esta pol´ıtica define quais s˜ao as partes autorizadas (vs. n˜ao autorizadas) para cada operac¸˜ao em um dado instante. No entanto, a provis˜ao de confidencialidade ´e um pouco mais complicada: confidencialidade pode ser requerida para alguns campos mas n˜ao para todos.
3.4.2 Mecanismos para Seguranc¸a de Funcionamento
A seguranc¸a de funcionamento de um espac¸o de tuplas pode ser implementada utilizando uma combinac¸˜ao de diversos mecanismos. A t´ecnica b´asica para implementar um espac¸o de tuplas com seguranc¸a de funcionamento ´e a replicac¸˜ao: o espac¸o de tuplas ´e replicado em um conjunto de n servidores de forma que a falha em alguns deles n˜ao viole a confiabilidade, disponibilidade e inte- gridade do sistema. A id´eia ´e utilizar um esquema de replicac¸˜ao que permita que mesmo em caso de falha em alguns servidores (sendo controlados por invasores e agindo maliciosamente ou apenas parando), o espac¸o de tuplas permanec¸a dispon´ıvel com suas operac¸˜oes conforme sua especificac¸˜ao (mantendo confiabilidade e integridade). Obviamente, existe um limite no n´umero f de r´eplicas que podem falhar, este n´umero depende da soluc¸˜ao de replicac¸˜ao empregada.
Outro mecanismo fundamental para seguranc¸a de funcionamento, especialmente para manutenc¸˜ao da integridade e confidencialidade, ´e o controle de acesso. Este tipo de mecanismo ´e necess´ario para prevenir clientes n˜ao autorizados de inserir (out), remover (in e inp) ou ler (rd, rdp) do espac¸o de tu- plas. Controle de acesso ´e usualmente implementado em servidores replicados atrav´es de um monitor de referˆencia que implementa a mesma pol´ıtica instalado em cada um dos servidores.
O terceiro tipo de mecanismo ´e a criptografia, que ´e usada para garantir confiabilidade nas comunicac¸˜oes e a confidencialidade das tuplas. Implementar confidencialidade em um espac¸o de tuplas replicado n˜ao ´e simples por diversas raz˜oes. A primeira, e mais importante, ´e que n˜ao podemos
confiar nos servidores individualmente para garantir a confidencialidade das tuplas uma vez que at´e f servidores podem falhar, possivelmente revelando o conte´udo das tuplas armazenadas a partes n˜ao autorizadas. A segunda complicac¸˜ao adv´em da necessidade de combinac¸˜ao entre tuplas e moldes. Campos cifrados geralmente n˜ao podem ser comparados com campos de um molde. Al´em disso, algumas pol´ıticas de acesso de granularidade fina podem impor limites nos campos que podem ser ci- frados. Para satisfazer estes dois requisitos, muitas vezes conflitantes, definimos trˆes tipos de campos: campos p ´ublicos, cujo conte´udo pode ser revelado e comparado; campos privados, cujo conte´udo n˜ao pode ser revelado ou comparado; e campos compar´aveis, cujo conte´udo n˜ao pode ser revelado, mas permite comparac¸˜oes de igualdade. O uso destes trˆes tipos de campos em uma tupla permite a implementac¸˜ao de controle de acesso por pol´ıticas de granularidade fina mantendo um certo n´ıvel de confidencialidade, o que de outra forma seria imposs´ıvel dada a natureza conflitante destes mecanis- mos. Os aspectos espec´ıficos sobre o uso de criptografia para manutenc¸˜ao de confidencialidade em espac¸os de tuplas s˜ao discutidos no cap´ıtulo 5.