3.5. Sosyal bir Gözetim Alanı Olarak Facebook ve Mahremiyetin Dönüşümü
3.5.3. Panoptik Bir Alan Olarak Facebook
As ameaças citadas até aqui estão relacionados ao caminho percorrido pela informação desde o dispositivo do usuário até o servidor na nuvem. Mesmo que a informação trafegue em segurança até a nuvem, durante o processamento estará exposta a diversas ameaças típicas de aplicações distribuídas e ambientes compartilhados. O tipo mais rudimentar é aquele relacionado ao descuido do programador que, muitas vezes, deixa de encriptar as mensagens trocadas entre o servidor de aplicação e o servidor de storage ou banco de dados – que, numa nuvem pública, pode estar até mesmo em outro continente.
Considerando que não haja esse tipo de descuido básico, ainda permanece o desafio de criar canais seguros de comunicação entre os diversos componentes das aplicações na nuvem. Entre as maiores dificuldades podemos citar o desafio de encontrar uma fonte de aleatoriedade forte e isolada para cada máquina virtual (VM, do inglês virtual machine) [72].
Essas fontes de aleatoriedade são um elemento fundamental de primitivas criptográfi- cas e protocolos de processamento e comunicação seguros. A aplicação mais importante é justamente no contexto dos algoritmos geradores ou derivadores de chaves criptográficas.
Máquinas desktop contam com fontes como o estado elétrico de periféricos e o compor- tamentos do usuário, manifesto no número e endereço de processos ativos, posições de elementos gráficos ou do ponteiro do mouse no monitor. Um servidor, desprovido de pe- riféricos e de interação direta com o usuário, não conta com essas fontes. Por isso, pode acabar gerando chaves com pouca entropia para cada VM ou chaves muito próximas, senão exatamente iguais, em diversas delas.
Outro tipo de vulnerabilidade muito comum diz respeito a falhas nos softwares de virtualização, monitoração e orquestração de recursos – ou na comunicação entre os ele- mentos dessa pilha de software básico –, que podem ser exploradas para que o atacante obtenha dados de uma VM. A preocupação primária na academia tem sido a identificação e mitigação de ataques do tipo side-channel, que utilizam informação vazada por esses elementos para quebrar chaves criptográficas de VMs alvo.
Além disso, o provedor pode fazer uso malicioso de funcionalidades típicas do software que gerencia as VMs. Ele tem acesso, por exemplo, aos snapshots das VMs – visões completas do estado de uma máquina em certo instante, incluindo dados persistidos nos discos virtuais, o conteúdo da memória e buffers de rede. A ameaça de ataques internos, o insider threat, é potencializada pela ausência de instrumentos de auditoria e detecção de uso anômalo embarcados na própria pilha de software básico. Note que, mesmo que o ataque não seja perpetrado por um agente interno ao provedor, o simples vazamento de credenciais de um colaborador pode expor todos os consumidores [102].
Uma maneira de lidar com esse problema é simplesmente alterar a estrutura desse software, separando privilégios de administração geral (monitoração de estado de recursos físicos, habilitação de usuários e alocação de VMs para usuários, etc.) da administração das VMs (geração e encriptação de snapshots, copia de VMs, etc.) [24]. Outra solução é a inclusão de mecanismos mais fortes de auditoria, de forma que uma tentativa de abuso por parte de um agente administrador não possa ser escondida ou apagada [16].
Outra técnica, chamada de VM nesting, consiste em administrar máquinas virtuais rodando dentro das máquinas virtuais criadas pelo provedor. O consumidor se encarrega de gerenciar e coordenar a operação dessas máquinas e pode utilizar recursos como crip- tografia baseada em senha, de forma que, mesmo com total acesso ao primeiro nível, sem as senhas e chaves adequadas, um atacante não pode acessar o conteúdo do segundo nível [74]. Os servidores de aplicação e outros elementos dessa arquitetura de serviços mantida pelo consumidor também podem ser compilados e configurados de forma a melhorar a segurança, permitindo, inclusive, que o processamento se dê sobre uma versão cifrada dos dados [113].
Consumidores de serviços de Platform-as-a-Service não têm tamanho controle sobre o serviço, e, consequentemente, não podem utilizar técnicas tão complexas de defesa.
Mesmo assim, podem elevar o nível de segurança da informação diminuindo a superfície de exposição de suas aplicações. Uma técnica bastante comum é o particionamento virtual da aplicação, que consiste em criar barreiras – preferencialmente com uso de primitivas criptográficas fortes – de forma que a informação só tenha sentido no contexto de um componente específico da aplicação. Dessa forma, ainda que uma vulnerabilidade seja explorada em um ponto da aplicação, a informação produzida ou processada em outras partições permanece segura [47, 36].
Outra forma de particionamento lógico e encriptar todos os dados com chaves espe- cíficas para cada objeto de dado representado, ou para cada usuário. A aplicação de uma combinação de criptossistemas parcialmente homomórficos pode suprir todas as ne- cessidades de processamento de aplicações mais simples. A informação cifrada é, então, armazenada e processada com uso de servidores de aplicação e sistemas de banco de dados padrão de mercado [35, 119].
Essa foi a estratégia adotada no decurso dessa pesquisa. A principal preocupação, ao se adotar esse tipo de procedimento, é selecionar os criptossistemas adequados ao domínio semântico da aplicação, isto é, adequados ao formato e natureza dos dados, bem como às operações essenciais a serem executadas sobre eles na nuvem. A intuição por trás dessa decisão é que o usuário nunca cede o controle dos dados, pois, ao cifrar os dados de maneira que seja possível realizar operações básicas, utiliza o poder computacional da nuvem sem que qualquer informação relevante seja desvendada ao provedor ou a qualquer atacante.
Existem trabalhos focados em aplicações que lidam com conteúdo textual, permitindo buscas por palavras-chave e até mesmo o estabelecimento de salas de chat [110, 96, 95]. Outros, focam em aplicações que lidam com dados estruturados, que exigem o uso de bancos de dados relacionais ou orientados a objetos [87].